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