android - 关于Android中保存和加载对象的问题

标签 android gson

最近我开始涉足Android开发。我已经完成了很多基本教程并制作了几个小应用程序,但我不明白的一件事是保存和加载对象的做法。我了解外部和内部存储、共享首选项和数据库之间的差异;我只是在实现它们时感到困惑。

在我之前的一个项目中,我使用 Gson 将自定义对象转换为 json,并在创建对象后立即将其保存到内部存储中。然后,每次用户打开应用程序时,我都会拉出所有对象(它们都是同一类)并将它们放入一个数组中,以便我的应用程序可以使用它们。这对我来说似乎不对,我想知道是否有人可以告诉我这是否是一个好的做法,或者向我解释为什么它不是以及替代方案是什么。

我目前正在开发一个笔记应用程序。我有一个注释对象,其中包含标题、正文和创建日期。我正在考虑做与上述相同的事情。当用户创建注释时,它将转换为 json 并在内部保存。如果用户关闭应用程序并重新打开它,它将加载 json,将它们转换回对象,并将它们放入数组中,以便我可以显示它们并允许用户查看和编辑它们。

这是一个好的做法吗?有更好的方法来处理这个问题吗?

谢谢!

最佳答案

您应该将数据保存到设备上的 SQLite 数据库而不是 JSON 中。查看 Room Persistence Library,以更顺畅的方式在 SQLite 中保存对象。

Room Persistence Library Documentation

Google Android Developer Video on Youtube.

您可以按照链接的示例、示例和Google Codelab进行操作快速学习它。这相当容易。

或者,您可以采用不那么推荐的方式直接使用 SQLite - 阅读 here .

关于android - 关于Android中保存和加载对象的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55261765/

相关文章:

android - scaleGestureDetector.getScaleFactor() 在 Android 6.0 中总是返回 1.0

android - 空 EditText 导致程序崩溃

java - 线程 "main"com.google.gson.JsonSyntaxException : java. lang.NumberFormatException 中出现异常:空字符串

java.lang.IllegalStateException : Expected BEGIN_ARRAY but was BEGIN_OBJECT Android error 错误

java - 如何设置来自应用程序的每天一次通知

c# - 查找给定 ID 的资源 - 作为变量

java - Gson HashMap<String, List<String>> 序列化和反序列化出现错误

java - 在没有模型的情况下使用 GSON 解析 JSON

java - 作为原始类型 ListAdapter 的成员,对submitList(List<T>) 进行未经检查的调用

java - GSON:如何将字段移动到父对象