是否更好地多次读取文件或将其保存在静态持有者中?

时间:2017-08-03 15:06:44

标签: android

我有一个大约88,000个姓氏的清单, 我需要每隔几分钟阅读一次,所以我只读了一次并将其存储在列表中。 它更好或者我应该每次都阅读。 内存与运行时间

2 个答案:

答案 0 :(得分:1)

  

每次更好或者我应该阅读

两者都没有,恕我直言。使用更智能的缓存。

  • 为此数据提供静态线程安全缓存。

  • 围绕该缓存设计API,以便缓存可以延迟加载。无论谁想要检查缓存都应该异步获取结果,因此如果缓存为空,则可以在后台线程上加载缓存内容。这可以使用侦听器/回调模式,RxJava / RxAndroid,LiveData等来完成。

  • 拥有Application的自定义子类,并在其中override onTrimMemory()。如果使用a value of TRIM_MEMORY_BACKGROUND或更高版本调用onTrimMemory(),请清空缓存,以便在用户未主动使用您的应用时,您的内存使用率会降低。

这样,使用缓存的代码不关心是否需要加载数据,并且当不太可能需要使用缓存时,可以最小化内存消耗。

或者,如果您一次不需要内存中的所有88,000个姓氏,请将它们存储在SQLite数据库中并根据需要查询该数据库。

答案 1 :(得分:0)

一般来说,运行时使用内存,所以你应该使用内存。区别在于您可以将内存存储为对象并根据需要将其从内存中删除,以便存在一些内存选择而不是一致的内存加载。

您是否考虑过为该逻辑使用API​​或JavaScript并加载JSON?使用API​​或JavaScript作为业务逻辑加载JSON的不同体系结构的方法可能有助于加载和卸载包含数据的对象。 JSON可以静态存储在本地,甚至可以动态存储(存储在远程服务器中),这有助于轻松更新您的姓氏。此外,此方法可以根据传递的参数查询数据,因此您可能不需要一次加载所有80.0000个姓氏。我看到这个问题与Android有关,但架构方法对于任何设备都是一样的。

我希望这可以帮助您或其他人根据体系结构和移动平台确定方法(如果使用的话,实际上没有定义问题)。

干杯!