Android Bitmap使用recycle()方法回收出现异常的问题,告急!

我代码是这样的:

Bitmap bm = ((MyApp)context.getApplicationContext()).getBmp(id);
mView.change(Bitmap.createBitmap(bm,0,0,bm.getWidth(),bm.getHeight(),matrix, true));
if(bm!=null && !bm.isRecycled()){
    bm.recycle();
    System.gc();
    bm=null;
} 

图片说明
为什么这样会出现异常,这是引用造成的吗?但是为什么有些我这样的写法又不会报错呢?真的搞不懂怎么回事,谁帮帮我?

5个回答

你的view中引用了bitmap吧,后面recycle以后,那么view就会引用一个空的bitmap,在执行绘制的过程当然会出现异常

先解除任何与bm的关系,比如有imgeview在使用这个bmp的话,先设置imageview的图为null,然后设置bmp=null,再回收

baidu_23478311
梅明子 我上面代码怎么解除与bm有关系的?不解
接近 6 年之前 回复

再用的bmp不能回收,这包括xml引用了资源方式等。所以只要你bmp不再用,随便你回收。

你在回收的时候比bitmap在其他地方使用了,正如各位大神们说的。我就路过一下。

要求recyclerview一直显示着图片,要怎么进行回收?在什么时候回收比较好

立即提问