我在滚动视图中添加了多个 imageView。如果图像很多,那么我会收到 OutOfMemeory 错误。所以我的问题是如何在 ImageView 图像离开屏幕时从内存中卸载它。
有任何想法吗 ?
我在滚动视图中添加了多个 imageView。如果图像很多,那么我会收到 OutOfMemeory 错误。所以我的问题是如何在 ImageView 图像离开屏幕时从内存中卸载它。
有任何想法吗 ?
一种更简单的方法是让位图本身按需加载和卸载。我说“更容易”是因为 Android 内置了对此的支持。
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);
这里的魔力在于inPurgeable
andinInputShareable
选项。当使用这些选项时,Android 会在一个特殊的堆上分配位图,在内存压力下它可以被快速丢弃,当需要再次显示时,Android 会自动重新解码清除的位图。
我想你可以试试 google i/o 2013 上介绍的 volley 库。