一、Bitmap经常会遇到的问题。

Android java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected]

 二、使用注意事项

mImageVew = (ImageView) findViewById(R.id.imageView);


Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.pic);
 
//Bitmap.createScaledBitmap 以后原有的bitmap 可以recycle 了,不然会引起outofmemoryerror
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 100, 100, true);
 
//BitmapDrawable 创建以后如果要是用的话,构造方法里面的bitmap 千万不要recycle 如果recycle 了就会报错
BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), scaledBitmap);
 
bitmap.recycle();
//scaledBitmap.recycle();
 
mImageVew.setImageBitmap(bitmapDrawable.getBitmap());
//scaledBitmap.recycle();

探索,证实bitmap如果被用到视图上显示,那么这个bitmap一定不能进行回收,否则即使当时没报错,关闭屏幕回来 或者调用buildCache方法还是会报错,如果觉得bitmap过大,应该之前就进行压缩处理。

相关文章: