2

我正在开发一个处理任意数量的用户定义视图的 Android 应用程序。视图可以非常简单和轻量级,或者它们可以非常复杂并且需要相对较长的时间来实例化。

当用户从一个视图切换到另一个视图时,我想使用后台线程来预缓存其中一些视图以提高响应能力。我有一种方法可以为每个视图设置优先级,以确定它们应该添加到缓存中或从缓存中删除的顺序。

我的问题是我需要确定何时内存不足。我想我可以用它MemoryInfo来确定我有多少可用内存。但是设置阈值是否有一个好的经验法则?我应该在什么时候停止缓存其他视图?在什么时候我应该考虑从缓存中删除低优先级的视图?

4

2 回答 2

0

我认为没有普遍的答案。

这通常取决于您的 UI 是如何构建的,您希望用户如何使用视图以及屏幕上可以容纳多少视图(即使它们是可变高度的)。

您可以看到一些模板,了解 Android 如何在 ListView/Adapter 组合中创建/预缓存视图。

AbsListView 实现

于 2013-04-24T19:28:13.783 回答
0

根据我的阅读,我需要关注的内存限制是 Dalvik 堆限制,而不是设备上可用的总内存。我使用这个过程来获取当前的堆利用率:

Java.Lang.Runtime rt = Java.Lang.Runtime.GetRuntime();
long heapused = rt.TotalMemory() - rt.FreeMemory();
long heapmax = rt.MaxMemory();
double ratio = (double)heapused / (double)heapmax;

我以低利用率积极预缓存,并以高比率积极清除缓存。

于 2013-05-01T22:47:08.057 回答