我有这样的事情:
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 时,我想从第一个对象中回收“bm”对象,导致此代码在那里,导致我的堆越来越大,然后抛出内存不足错误,所以我这样做:
bm.recycle()
在我将位图(bm)设置为 imageView 对象之后。
这会导致 ImageView 的画布想要绘制回收的 Bitmap 的异常。
回收已经作为图像放在 ImageView 上的 Bitmap 的方法是什么?
Thanksb
在你的 onDestroy 方法中你可以尝试这样的事情:
ImageView imageView = (ImageView)findViewById(R.id.my_image);
Drawable drawable = imageView.getDrawable();
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
Bitmap bitmap = bitmapDrawable.getBitmap();
bitmap.recycle();
}
由于 setImageBitmap 实现为
public void setImageBitmap(Bitmap bm) {
setImageDrawable(new BitmapDrawable(mContext.getResources(), bm));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)