【问题标题】:File or Database? - Best Practice to save Objects on Android-Device文件还是数据库? - 在 Android 设备上保存对象的最佳实践
【发布时间】:2013-08-03 17:12:56
【问题描述】:

我正在用 java 构建一个 android 应用程序,我在其中定义了一些对象,例如“用户”或“播放列表”等。

如何将这些自定义对象保存在设备上供以后访问?

    Gson gson = new Gson();
    String json = gson.toJson(user);

我可以通过 GSON 将对象解析为 JSONObject 或 JSONArray。现在我有两个选项来保存字符串:在数据库或文件中。我知道如何使用 android 数据库类和文件写入器/读取器类,但在性能、可访问性,尤其是简单性方面,最佳做法是什么?

【问题讨论】:

标签: android database json file gson


【解决方案1】:

Android 内置的 SQLite 数据库是缓存大量信息的好解决方案。例如,如果您不断地从云中检索数据,然后计划存储它,您应该使用 db。数据库是为处理大量数据而构建的,因为它们包含索引功能。

可以在此处找到使用 SQLite db 缓存 JSON 数据的示例:Caching downloaded JSON data to SQLite database - is it a good idea?

【讨论】:

    【解决方案2】:

    数据库扩展性好,数据库引擎解决了内存管​​理问题,数据库性能好(使用得当),数据库引擎允许你运行复杂的查询而无需编写大量Java代码,数据库引擎允许您可以在不写入整个文件的情况下插入或删除行,Android 的小部件原生支持该数据库。请记住,您的应用可以使用多少内存是有限的,因此如果您的 JSON 文件变得非常大,您将无法将它们完全加载到内存中。

    【讨论】:

      【解决方案3】:

      使用database。您的 JSON 可以很容易地被解析并读入数据库。另外,您可以使用SQL 查询来查找和操作您将来需要的数据。平面文件不会为您提供同样的灵活性。文件可能对其他应用程序有用,但对于 JSON,分解为对象,表示事物 - 数据库更有意义。

      【讨论】:

        【解决方案4】:

        这真的取决于您的用例

        如果您的应用程序数据变化不大(想想一年使用一次或两次的会议应用程序),那么您可以使用 ContentProvider + CursorAdapters,这将使您的生活更轻松。

        如果您的应用程序数据变化很大(想想 Gmail,每天可以弹出多达数百封电子邮件,或者新闻提要,或者像 Google+ 这样的社交网络应用程序),那么数据库可能会使您的生活变得更糟。在这种情况下,您应该使用 3rd 方缓存系统,例如 Google Volley 或 RoboSpice 等,它会为您处理 JSON 对象的所有缓存以及出现的所有并发问题等。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-10
          • 2012-09-16
          • 1970-01-01
          • 2021-06-16
          • 2011-05-10
          • 2013-10-23
          • 1970-01-01
          相关资源
          最近更新 更多