Bitmap的处理 解决out of memory的一些问题

本文介绍了一种使用软引用来缓存Bitmap的方法,通过将图片保存在内存中以提高加载速度。当需要图片时首先从内存查找,若未找到则从文件路径加载。提供了加载和释放Bitmap的具体实现。

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

直接上程序


思想是 先使用软引用 

也就是把图片保存在内存之中 用到时候先去找

找不到再从路径加载

有个独立的释放函数 如果不用了 请记得调用释放函数

public class DoBitmap {

    private static HashMap<String, SoftReference<Bitmap>> bitmapCache = new HashMap<String, SoftReference<Bitmap>>();

    public static Bitmap loadBitmap(String path)
    {
        if (bitmapCache.containsKey(path))
        {
            SoftReference<Bitmap> softReference = bitmapCache.get(path);
            Bitmap bitmap = softReference.get();
            if (null != bitmap)
            {
                return bitmap;
            }
        }

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = false;
        options.inSampleSize = 3;
        options.inDither = false;
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        Bitmap bitmap = BitmapFactory.decodeFile(path, options);
        bitmapCache.put(path, new SoftReference<Bitmap>(bitmap));
        return bitmap;
    }

    public static BitmapDrawable decodeImage(String path)
    {
        return new BitmapDrawable(loadBitmap(path));
    }

    public static void releaseBitmap(String path)
    {
        if (bitmapCache.containsKey(path))
        {
            SoftReference<Bitmap> softReference = bitmapCache.get(path);
            Bitmap bitmap = softReference.get();
            if (null != bitmap)
            {
                bitmap.recycle();
            }
            bitmapCache.remove(path);
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值