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

9

我正在用Java构建一个Android应用程序,其中定义了一些对象,例如"user"或"playlist"等。

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

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

我可以通过GSON将对象解析为JSONObject或JSONArray。现在有两个选项可以保存这些字符串:数据库或文件。我知道如何使用Android数据库类和文件编写器/阅读器类,但是就性能、可访问性和简单性而言,最佳实践是什么呢?


3
https://dev59.com/93A65IYBdhLWcg3wsg2B#3681831 - Boris Mocialov
4个回答

5

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


5

这真的取决于您的用例

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

如果您的应用程序数据经常发生变化(比如 Gmail,每天可能会出现数百封电子邮件,或者新闻源,或者像 Google+ 这样的社交网络应用程序),那么使用数据库可能会让您的生活更加糟糕。在这种情况下,您应该使用第三方缓存系统,例如 Google Volley 或 RoboSpice 等,它们可以处理所有 JSON 对象的缓存和并发问题等。


1
Android内置的SQLite数据库是缓存大量信息的好解决方案。例如,如果您不断地从云端检索数据,然后计划将其存储,您应该使用数据库。数据库专为处理大量数据而构建,因为它们包括索引功能。
在此处可以找到使用SQLite数据库缓存JSON数据的示例:将下载的JSON数据缓存到SQLite数据库中-这是一个好主意吗?

1
使用一个 数据库。您的 JSON 可以轻松地被解析并读入数据库中。此外,您可以使用 SQL 查询在未来找到和操作数据。平面文件将不允许您拥有同样的灵活性。文件可能对其他应用程序有用,但对于被分解为对象表示事物的 JSON,数据库更加合理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接