文件或数据库? - 在Android设备上保存对象的最佳实践

时间:2013-08-02 12:23:13

标签: android database json file gson

我正在java中构建一个android应用程序,我在其中定义了一些像“user”或“playlist”等对象。

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

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

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

确实取决于您的使用案例

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

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

答案 2 :(得分:1)

内置于Android的SQLite数据库是缓存大量信息的好方法。例如,如果您经常从云中检索数据,然后计划存储它,则应使用数据库。 Dbs是为处理大量数据而构建的,因为它们包含索引功能。

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

答案 3 :(得分:1)

使用database。您的JSON可以轻松解析并读入数据库。此外,您可以使用SQL查询来查找和操作将来需要的数据。平面文件不允许您具有相同的灵活性。文件对于其他应用程序非常有用,但对于JSON,分解为对象,表示事物 - 数据库更有意义。