当ImageView图像在ScrollView中离开屏幕时,将其从memory中卸载



我在滚动视图中添加了多个imageView。如果图像太多,那么我会出现OutOfMemory错误。所以我的问题是,当ImageView图像离开屏幕时,我如何从内存中卸载它。。

有什么想法吗?

一种更简单的方法是根据需要加载和卸载位图本身。我说"更容易"是因为安卓系统内置了对它的支持。

Resources r = getResources();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable = true;
options.inInputShareable = true;
imageView1.setImageBitmap(BitmapFactory.decodeResource(r, R.drawable.image1, options);
imageView2.setImageBitmap(BitmapFactory.decodeResource(r, R.drawable.image2, options);

这里的神奇之处在于inPurgeableinInputShareable选项。当使用这些选项时,Android会将位图分配到一个特殊的堆上,在内存压力下可以快速丢弃,当需要再次显示清除的位图时,Android将自动重新解码。

我想你可以尝试一下谷歌I/o 2013推出的截击库。

最新更新