我有一个大约88,000个姓氏的清单, 我需要每隔几分钟阅读一次,所以我只读了一次并将其存储在列表中。 它更好或者我应该每次都阅读。 内存与运行时间
答案 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有关,但架构方法对于任何设备都是一样的。
我希望这可以帮助您或其他人根据体系结构和移动平台确定方法(如果使用的话,实际上没有定义问题)。
干杯!