我正在开发一个定期向外部服务器发送信息的应用程序。我为发送的数据制作了本地副本,以备用。
在节省电池寿命方面存储数据的最佳选择?每个数据提交都是一个序列化对象(该类有5个字段,包括日期,数字和字符串),大约5K-10K。
还有其他想法吗?
答案 0 :(得分:15)
我不相信您使用SQLite还是文件,因为SQLite数据库只是系统上的文件(存储在/data/data/<your_package>/databases/
中)。您需要在正确的时间提交数据库,就像在正确的时间将文件保存到硬盘驱动器所需的那样。换句话说,您可以使用同样多的硬盘驱动器写入。
我认为您选择的内容更多地取决于您节省的数据类型。如果你需要拥有db的权力(例如查询),那么一定要使用SQLite。但是,如果您不需要数据库,或者您的数据变化很大(并且无法在关系数据库中轻松设置),那么我将使用文件。
我可以肯定地告诉你,你应该不使用序列化来保存文件,如果这是你选择的路线。 Android序列化速度慢,速度慢,创建大文件。出于性能原因,编写自己的XML或JSON格式要好得多。
答案 1 :(得分:13)
我对电池寿命没有直接的了解,但一个标准更容易管理?管理数据的操作越少意味着CPU周期越少,电池寿命越长。
我想说SQLite选项更容易。您可以在SQLite表中放置一个日期列来存储您的数据,这样可以删除您不再需要的旧提交 - 并且所有这些都通过本机SQL库处理。使用您自己的Java代码管理整个文件负载 - 或者更糟的单个文件 - 将会更加有效。
此外,您可以将数据写入数据库,只需忘记它,直到您需要再次阅读它。如果您要将数据存储在文件中,则需要在Android application life cycle上按照术语阅读和编写文件时进行计算。如果您担心电池,您可能不希望更频繁地编写文件,并将数据缓存在内存中,但是您需要确保在应用暂停或销毁时没有丢失任何数据。在我看来,使用SQLite数据库要容易得多,而不用担心这一点。
答案 2 :(得分:4)
您的应用程序是多线程的吗?如果你有多个线程访问数据存储,那么我会选择SQLite。让SQLite担心锁定问题。