[英]Android App more Efficient to Go to DB or Keep Collection in Memory
我建立了我的第一个android应用。 我有一组显示的列表。 我想知道手机的内存容量是否较小,这是一种更好的设计方法,可以使数据库每次都进入我的列表,或者将其保留在内存中吗?
我确实需要频繁地对列表进行重新排序,因此只需按已排序的顺序将它们从数据库中取出,这将非常快。
内存中列表使用RAM,频繁的数据库查询使用CPU并导致I / O滞后。 在移动设备上,您必须权衡所有这些条件,以使代码具有响应能力,同时又要节省电池,并且对RAM和CPU的影响最小。
为您的代码设置合理的限制并尝试在其中使用。 确定最大内存限制和最小响应时间。
只要有足够的RAM可以将数据保留在内存中,当超出RAM限制(分页)时,就开始将部分数据读/写到磁盘DB。 仅在极少数情况下,您才需要这样做,因为大多数现代移动设备都具有合理的RAM,可以满足其提供的应用程序的平均需求。
一个典型的示例是显示一百万个项目的列表,其中您在RAM中保留了1000个左右,然后按需从数据库中加载下一个/上一个1000。
最后,当您的App不在时,请确保将重要数据持久保存到数据库。
数据库仅应用于在电源循环之间或应用程序之间存储非设置信息。 您不应该将它们用于可放入内存的内容,因为它会比较慢,并且会产生大量额外的编程。
如果您需要处理大量列表,并且有一种很好的方式将它们组织成表,以SQL检索它们,则可能会发现使用数据库将数据保留在持久性内存中很有用。
编辑 :
另外,您可能需要考虑数据的访问频率。 您不想不断查询数据库。
我们不知道您列表的内容,但是除非您使用图形处理,否则通常您不会侵犯设备或应用程序的内存限制。
文本数据和仅推断为数据类型的结构将不会耗尽设备的“有限内存”,除非它们确实很大。
无论如何,我的答案是将其保留在内存中。 仅保留您需要的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.