代码之家  ›  专栏  ›  技术社区  ›  Guido

Android数据存储-文件vs sqlite

  •  11
  • Guido  · 技术社区  · 15 年前

    我正在开发一个定期向外部服务器发送信息的应用程序。为了备份的目的,我制作了一份正在发送的数据的本地副本。

    存储数据的最佳选择是什么 在节省电池寿命方面 是吗?每个数据提交都是一个序列化对象(类有5个字段,包括日期、数字和字符串),大约为5K-10K。

    还有别的主意吗?

    3 回复  |  直到 15 年前
        1
  •  13
  •   David Webb    15 年前

    我不知道电池的寿命直接,但有一个标准是哪个更容易管理?更少的数据管理操作意味着更少的CPU周期,进而延长电池寿命。

    我会说sqlite选项更简单。您可以在sqlite表中放置一个日期列,该列存储您的数据,这使得删除不需要的旧提交变得非常容易,并且都是通过本机SQL库处理的。用自己的Java代码管理整个文件或更糟的单个文件将是更大的工作。

    此外,您可以将数据写入数据库,然后将其忘记,直到需要再次读取它为止。如果您要将数据存储在文件中,则需要计算何时应该在 Android application life cycle . 如果你担心电池的问题,你可能不想写文件的频率超过你应该写的频率,并在内存中缓存数据,但你需要确保你的应用程序暂停或毁坏时没有丢失任何数据。在我看来,使用一个sqlite数据库要容易得多,而不必担心这些问题。

        2
  •  15
  •   Dan Lew    15 年前

    我不认为使用sqlite还是文件很重要,因为sqlite db只是系统上的一个文件(存储在 /data/data/<your_package>/databases/ )。您需要在正确的时间提交到数据库,就像在正确的时间将文件保存到硬盘一样。换言之,您可以使用一种或另一种方式,就像使用硬盘驱动器写入一样多。

    我认为你选择什么更取决于你保存的是哪种数据。如果您需要拥有数据库所能赋予的能力(比如查询),那么一定要使用sqlite。但是,如果您不需要数据库,或者您的数据变化很大(在关系数据库中不容易设置),那么我将使用文件。

    我可以肯定地告诉你 使用序列化保存文件(如果这是您选择的路由)。Android序列化速度慢、慢、慢,并创建大型文件。出于性能原因,最好编写自己的XML或JSON格式。

        3
  •  4
  •   Bryan Bedard    15 年前

    您的应用程序是多线程的吗?如果有多个线程访问数据存储,那么我将使用sqlite。让sqlite担心锁定问题。