我有类似以下的东西:
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
WeakReference<Bitmap> bm = new WeakReference<Bitmap>(Bitmap.createBitmap(3000 + 3000, 2000, conf));
Canvas canvas = new Canvas(bm.get());
canvas.drawBitmap(firstBitmap, 0, 0, null);
canvas.drawBitmap(bm, firstBitmap.getWidth(), 0, null);
imageView.setImageBitmap(bm);
我将此应用于一个一个创建的10多个imageView上。每当我创建新的imageView时,我想回收来自第一个imageView的'bm'对象,因为上面的代码会导致我的堆越来越大,然后抛出 OutOfMemoryError。因此,我这样做:
bm.recycle()
在我将Bitmap(bm)设置为imageView对象后,立即出现异常。这导致ImageView的画布想要绘制已回收的Bitmap。
有什么方法可以回收已经作为图像放置在ImageView上的Bitmap吗?
谢谢。