Bitmap高效缓存(二) LruCache类实现缓存图片到内存

上一节通过使用BitmapFactory的Options类进行图片的压缩来实现图片加载优化。但是同一资源如果要进行频繁的访问,显然每一次都从网络上下载资源显然是不合理的,所以要用到缓存机制。将网络资源下载后放到本地或内存,之后就可以直接获取本地资源而不用下载资源。

方法二 LruCache类实现缓存图片到内存

LRU算法是近期最少使用算法,普遍应用在操作系统的内存管理上。当存储空间满了之后,它会删除最久未使用的资源从而腾出存储空间。
LruCache是Android3.1提供的一个缓存类,将缓存存放在LinkedHashMap中。LinkedHashMap按照使用时间进行排序,当缓存满了之后删除最后一个缓存,即最久未使用的缓存。
LruCache提供了get()和put()请求使得缓存方法更加方便简单。

使用方法
  • 构造一个LruCache对象
public LruCache<String, Bitmap> mLrucache;
int maxSize = (int) (Runtime.getRuntime().maxMemory() / 8);
mLrucache = new LruCache<String, Bitmap>(maxSize) {
            @Override
            protected int sizeOf(String key, Bitmap value) {
                return value.getByteCount();
            }
        };

maxSize为确定缓存的最大容量,一般为内存的1/8;sizeof方法确定每个图片的大小。

  • put()方法将对应文件放入LinkedHashMap中,一般用于资源不存在第一次加载之后
private void putBitmapToCache(Bitmap bitmap, String url) {
        if(bitmap != null) {
            mLrucache.put(url, bitmap);
        }
    }
  • get()方法检查内存中是否有该资源,如果存在返回该资源
private Bitmap getBitmapFromCache(String url) {
        if(url != null) {
            if(mLrucache.get(url) != null) {
                return mLrucache.get(url);
            }
            return null;
        }
        return null;
    }

上一节 Bitmap高效缓存(一) 利用BitmapFactory的Options类压缩位图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chook_lxk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值