Android 中Bitmap 在ImageView中OOM问题

来源:互联网 发布:中国足球巅峰时期知乎 编辑:程序博客网 时间:2024/06/05 04:55

Android中Bitmap是非占用内存的,如果不用好非常容易出现OOM(outofmemory)错误!

1、当你在对bitmap重复使用非多的情况下,如果不对他进行recycle,应用程序非法容易挂掉!示例如下

private Bitmap mBitmap[] = new Bitmap[1000];

for(for i =0;i<1000;i++){

mBitmap=Bitmap.createBitmap(360,240,Bitmap.Config.RGB_565)

}

这时候你应该在不使用的时候recycle bitmap;如下

for(for i =0;i<1000;i++){

mBitmap[i].recycle();

mmBitmap = null;

}

2、

当你使用bitmap为imageview设置图片时候,如

Imageview mImage;

Bitmap mBitmap;

mImage.setImageBitmap(mBitmap);

这时候你应该这样来翻译Bitmap所占用的内存


Drawable d= mImage.getDrawable();
        if(d!=null&& d instanceof BitmapDrawable)
        {                        
            Bitmap bmp=((BitmapDrawable)d).getBitmap();
            bmp.recycle();
            bmp=null;
        }
        mImage.setImageBitmap(null);
        if(d!=null){
            d.setCallback(null);
//这句别忘记加了

}

0 0