9

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

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

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

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

4

4 回答 4

5

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

于 2013-08-02T12:28:44.043 回答
5

这真的取决于您的用例

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

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

于 2013-08-02T12:38:19.747 回答
1

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

可以在此处找到使用 SQLite db 缓存 JSON 数据的示例:将下载的 JSON 数据缓存到 SQLite 数据库 - 这是个好主意吗?

于 2013-08-02T12:28:27.233 回答
1

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

于 2013-08-02T12:30:30.830 回答