Android 中Bitmap 在ImageView中OOM问题

本文介绍Android中Bitmap的内存管理技巧,防止因Bitmap占用过多内存而导致的OOM错误。文章提供了两个实例,展示了如何正确回收Bitmap资源及如何在ImageView更新时释放旧的Bitmap资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
//这句别忘记加了

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值