在Android应用程序中,用于存储内容的选择是SQLite还是XML文件?

3

我需要存储我的Android应用程序内容,并想获得关于使用哪种存储的提示。SQLite数据库还是XML文件?

应用程序和数据的一些特点:

  1. 该应用程序用于跟踪(每天)体重,腰围,胸部等身体测量。
  2. 测量类型分别在不同的选项卡中,彼此之间没有依赖关系。
  3. 实体包含少量数据,4-5个属性。
  4. 预计数据量适中。最多(30个月份的测量值x 5个测量类型=每年1800个测量值)。
  5. 不会使用任何高级查询。主要是阅读(所有数据元素)和添加新测量值。
  6. 我希望能够轻松分享/导出测量数据,例如到Dropbox或电子邮件。

我猜这些要求/特性使用XML文件存储数据不存在性能问题。如果是这样,那么是否应将每种测量类型分别存储为XML文件并将文件存储在移动设备的何处?

3个回答

5
我建议您阅读一下Android上可用的存储选项,以获取更多信息。
你所描述的,将数据写入Dropbox中的文件似乎像是将数据写入保存在Dropbox中的XML文件中,这似乎是一个不错的选择。没有复杂的查询,只需逐条读取记录即可。
然而,我认为使用SQL数据库并不会增加太多工作量。从长远来看,这将更加灵活。现在您可能不想进行查询,但有一天您可能需要。此外,您也不必担心将数据分成几个文件并解析它们。当您尝试扩展时,解析可能很快变得麻烦。
我建议编写一个ContentProvider,然后将所有详细信息放在其中。这样,如果以后想要更改数据存储方式,程序就不必关心了,因为提供程序会为您完成所有繁重的工作。我更喜欢使用CursorAdapter,而不是其他任何东西,以及从SQLite中获取。此外,所有新的CursorLoader都可以保持应用程序的性能。

感谢您提供有用的想法。我认为你是正确的,在长期来看,将数据库作为存储是正确的决定。以XML格式导入/导出数据只需一次操作,非常容易解决。 - Ismar Slomic
另一件需要考虑的事情是,您将不得不编写一个AsyncAdapter来上传数据库到云端,而不是让Dropbox来完成。无论如何,我仍然建议使用ContentProvider,这样您就可以隐藏所有不好的细节。 - Frank Sposaro

3

0

如果你的XML数据很大,进行XML解析和插入是一项非常耗费资源、耗时的操作。

使用XML解析和插入可能会遇到以下问题:

a. XML解析需要大量内存,因此堆大小会增加,你需要注意这一点,因为这可能会导致崩溃。b. 在SQLite数据库中插入每个元组(行)需要约100毫秒的时间,因此你可以计算出将成千上万行数据装入数据库所需的时间。

如果你的数据不太大,就不必担心使用SQLite。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接