Android (OutOfMemory )Bitmap使用优化

本文介绍了在Android开发中使用Bitmap时避免出现OutOfMemory错误的方法,包括手动回收内存、图片压缩及缓存Bitmap对象。

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

对于大部分新手来说 OutOfMemory 是经常出现的错误,尤其是在大量使用 Bitmap 时这样的错误更是时常出现。

对于新手来说以下几点可以很好的帮助你避免在使用 Bitmap 过程中出现的 OutOfMemory  错误。

      1、及时手动回收 Bitmap 所占用的内存;

手动回收 Bitmap 占用内存可以很好的避免错误。如何手动回收呢?Bitmap 类提供了 recycle() 方法。如方法名它具

有回收 Bitmap 内存的功能。所以在使用完 Bitmap 后(确保之后无需使用,不然会出现空指针异常),调用该方法

并提示系统回收机制回收该内存(System.gc())。

// 先判断 bitmap 是否已经回收 
 
if(bitmap != null && !bitmap.isRecycled()){   
 
        // 回收并且置为null 
 
        bitmap.recycle();   
 
        bitmap = null;  
 
       //提示系统回收
        System.gc(); 
 
}   
 


2、使用时压缩图片

在使用 Bitmap 是可以先获取其宽、高,再判断是否需要对图片进行压缩。

获取宽高:

int width;//宽

int height;//高

BitmapFactory.Options opts = new BitmapFactory.Options(); 
 
    // 设置inJustDecodeBounds为true 
    //设置为TRUE时返回的bitmap对象为null,需要使用bitmap实例时得重新设置为FALSE

    opts.inJustDecodeBounds = true; 
 
    // 使用decodeFile方法得到图片的宽和高 
 
    BitmapFactory.decodeFile(path, opts); 

    width=opts.outWidth;

    height=opts.outHeight;
判断后压缩:

    opts.inSampleSize = 2;//图片宽高都为原来的二分之一,即图片为原来的四分之一

在压缩时主要是对其边界进行压缩。

3、缓存 Bitmap 对象

在可能出现同一界面使用同一 Bitmap 多次的情况下,可以先对该 Bitmap 对象进行缓存。因为通过 BitmapFactory 实例出来

的 Bitmap  对象是不同的对象会占据更多的内存。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值