【问题标题】: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
【解决方案2】:
数据库扩展性好,数据库引擎解决了内存管理问题,数据库性能好(使用得当),数据库引擎允许你运行复杂的查询而无需编写大量Java代码,数据库引擎允许您可以在不写入整个文件的情况下插入或删除行,Android 的小部件原生支持该数据库。请记住,您的应用可以使用多少内存是有限的,因此如果您的 JSON 文件变得非常大,您将无法将它们完全加载到内存中。
【解决方案3】:
使用database。您的 JSON 可以很容易地被解析并读入数据库。另外,您可以使用SQL 查询来查找和操作您将来需要的数据。平面文件不会为您提供同样的灵活性。文件可能对其他应用程序有用,但对于 JSON,分解为对象,表示事物 - 数据库更有意义。
【解决方案4】:
这真的取决于您的用例。
如果您的应用程序数据变化不大(想想一年使用一次或两次的会议应用程序),那么您可以使用 ContentProvider + CursorAdapters,这将使您的生活更轻松。
如果您的应用程序数据变化很大(想想 Gmail,每天可以弹出多达数百封电子邮件,或者新闻提要,或者像 Google+ 这样的社交网络应用程序),那么数据库可能会使您的生活变得更糟。在这种情况下,您应该使用 3rd 方缓存系统,例如 Google Volley 或 RoboSpice 等,它会为您处理 JSON 对象的所有缓存以及出现的所有并发问题等。