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