我构建了我的第一个 android 应用程序。我有一组要显示的列表。我想知道手机的内存很小,每次都为我的列表访问数据库还是将其保存在内存中是一种更好的设计方法吗?
我确实需要经常重新排序列表,因此只需按排序顺序将它们从数据库中抓取出来就可以了。
我构建了我的第一个 android 应用程序。我有一组要显示的列表。我想知道手机的内存很小,每次都为我的列表访问数据库还是将其保存在内存中是一种更好的设计方法吗?
我确实需要经常重新排序列表,因此只需按排序顺序将它们从数据库中抓取出来就可以了。
内存中的列表使用 RAM,频繁的 DB 查询使用 CPU 并导致 I/O 延迟。在移动设备上,您必须平衡所有这些以使您的代码具有响应性,同时节省电池并且对 RAM 和 CPU 的影响最小。
为您的代码设置合理的限制并尝试在其中工作。确定最大内存限制和最小响应时间。
只要您有空闲的 RAM,就将数据保留在内存中,当您超过 RAM 限制(分页)时,开始将该数据的部分读/写到磁盘 DB。您只在极少数情况下需要它,因为大多数现代移动设备都有合理的 RAM 来满足它们提供的应用程序的平均需求。
一个典型的例子是显示一百万个项目的列表,您在 RAM 中保留 1000 个左右,并按需从 DB 加载下一个/上一个 1000 个。
最后,当您的 App 不存在时,请确保将重要数据保存到 DB。
数据库应该只用于存储电源循环之间或应用程序之间的非设置信息。您不应该将它们用于可以放入内存的东西,因为它会更慢并且需要大量额外的编程。
如果您需要处理大量列表并有一种很好的方法将它们组织成表格,在 SQL 中检索它们,我可能会看到使用数据库将数据保存在持久内存中是有用的。
编辑:
此外,您可能需要考虑访问数据的频率。您不想不断地查询数据库。
我们不知道您列表的内容,但通常您不会侵犯设备或应用程序的内存限制,除非您正在处理图形。
推论为简单数据类型的文本数据和结构不会耗尽设备的“有限内存”,除非它们确实很大。
无论如何,我的答案是把它留在记忆中。只保留您需要的数据。