在SQLite或文件系统中存储Android应用程序数据的更好方法是什么?

时间:2012-04-13 17:27:07

标签: android sqlite storage

我的应用程序需要在手机上存储数据,但我不确定什么是更有效的方法。我不需要搜索数据或类似的东西。我只需要能够在应用程序关闭时保存应用程序的当前状态,并在应用程序恢复时进行恢复。有1MB到10mb的数据需要保存。

基本上有一堆包含数据的自定义类,现在我将它们作为Serializable,并将每个类保存到文件中。我有什么理由改变它以将其存储在SQLite中吗?

3 个答案:

答案 0 :(得分:0)

如果您在哪里使用sqlite,您可以随时保存,并且知道如果持有数据的应用程序/活动突然被操作系统杀死,那么数据库中的内容几乎是最新的。其他我无法看到和明显的理由使用sqlite为您的用例。 此外,对于sql方法,您可以使用明确的方法在以后更改域对象的结构,并将数据从旧版本迁移到新版本。这也可以使用序列化对象来完成,但是这些对象需要同时复制,包括新旧对象。对我来说这听起来非常可怕和混乱,特别是考虑到你可能需要从版本x到y,所以如果你需要更新域对象,你可能会遇到一些非常棘手的问题。 老实说,我没有看到使用平面文件/序列化方法的任何好处。

答案 1 :(得分:0)

您在问题中提到数据仅用于保存应用程序的状态,因此我的初始响应是将其保留在设备上,特别是因为您提到文件大小不会超过10MB,这很合理。

所以我对你的回答就是把它保存在设备上。如果您将来对信息的使用发生变化,那么您应该重新考虑这种方法,但是现在它完全符合逻辑。

答案 2 :(得分:0)

如果您只保存序列化类,则可以使用this thread中讨论的ORM映射器。这样可以省去编写自己的映射器带来的不便,并且可以轻松扩展到新类。此外,如果您的要求发生变化,您可以查找数据。

将系统更改为SQLite的唯一原因是更舒适,也许是一个更加万无一失的系统。例如。现在你必须检查文件是否存在,解析内容等。如果你使用SQLite,你不必验证数据的完整性,Android也可以帮助你一点点。您可以将数据用于其他原因,例如在ListView中显示它们。