最佳的动态数据存储方式?

时间:2018-07-03 08:16:11

标签: android sqlite local-storage android-database

我正在为Android开发启动器,并且在设计持久存储系统时需要一些建议。

我希望人们能够为其应用创建不同的类别(例如媒体,实用工具,社交)。用户必须能够选择其应用程序的顺序,并且应用程序可以出现在多个类别中。用户可以更新应用程序的顺序,并且顺序应在重新启动后持续存在。我还想跟踪应用程序的启动频率,以便我可以拥有一个自动的“最常用”类别。

我有两种方法,但似乎都不理想:

  1. 将应用程序列表保存到文件(JSON或其他)中,并注意包名称和列表中的位置。需要时,请将该文件放入并按顺序排序

  2. 将列表保存在SQLlite数据库中,或者:

    • 为每个类别都有一个表格。列将为package_name和list_position
    • 只有一个表,每个类别都有一列,用于存储该应用在该类别中的位置(如果不存在,则为null)。创建新类别后,会添加新列(“会议室”中不支持)。

选项1我觉得保持动态和效率不确定很棘手,所以我更喜欢选项2,因为它易于更新和自动排序,但是为此使用DB可能会过大。

任何建议或其他可能的解决方案都很棒!谢谢

2 个答案:

答案 0 :(得分:1)

我将寻求数据库方法。我认为将数据存储在文件中对于小型应用程序可能是一个不错的选择,在小型应用程序中数据不会增长,并且在销毁应用程序之前将更改最多刷新一次。

如果要避免使用SQLite的样板代码,请考虑使用Room。另外,您可能想看看Realm,它可以替代SQLite。

答案 1 :(得分:0)

如果您的功能受到限制,则可以使用基于文件的方法,您的方法取决于您想要具有的功能

->添加(即(附加))特定索引,否则您需要重新整理或整理数据。

->使用数据,即以有序方式访问数据或在多个功能上进行过滤。

通常最好将文件中的数据存储在较小的键值集合中,例如android Sharedpref本身。 根据启动器的功能,文件系统会变得复杂且访问和修改速度较慢,在这种情况下,(文件)不是将应用程序列表(以及其他信息,如果需要)存储在文件中的最佳方法。

建立数据库将有助于克服所有复杂的功能,例如不同的排序和其他功能。