我的应用程序中的几个Activity
s 在 a 中显示图像,ListView
其中的每一行都ListView
包含一个ImageView
.
这方面的一个示例是搜索屏幕,用户在其中搜索、获取结果并显示每个结果的图片。
我正在尝试权衡实施全局LruCache
与每个都Activity
包含自己的本地的成本/收益LruCache
的成本/收益。
这是我的两个主要问题。两者都围绕着我的应用程序非常大的事实,这意味着有很多屏幕显示这些图像。此外,我的应用程序具有流行的侧边菜单导航方式。正因为如此,我可以打开菜单,点击Activity B
,打开菜单,点击Activity A
,打开菜单......等等,并Activity
无限期地创建一个 ABABABABABABAB 堆栈。
全球的
Activity
s with ImageView
s using Bitmap
s from a global不会LruCache
包含对这些的引用Bitmaps
吗?假设用户Activity
通过单击 some离开此位置Button
。那Activity
现在在Activity
堆栈上,并且仍然保存对那些Bitmaps
. 如果LruCache
弹出一个Bitmap
关闭,当堆栈中的某个in持有对它的引用Bitmap
时,它真的可以被回收吗?ImageView
Activity
我之前创建了自己的自定义缓存。如果我调用recycle()
a Bitmap
,然后用户点击后退按钮返回到Activity
堆栈中包含对 that 的ImageView
集合的某个位置Bitmap
,则应用程序将崩溃。这就是为什么我相信堆栈上的ImageView
s 上Activity
的 s 仍然持有对Bitmap
s 的引用。
当地的
正如我之前提到的。我的应用程序非常大,侧边菜单样式的导航允许用户创建相当大的Activity
堆栈。这会产生很多LruCache
s。而且,由于您必须在LruCache
初始化时声明它的大小,因此似乎没有任何选择大小的好方法。
想法?建议?
此时我想我必须做全局,但我不知道如何解决Activity
堆栈引用问题。我无法想象这不是许多应用程序都没有遇到的问题。我不知道为什么我没有找到有关它的信息。