安卓缓存之LruCache及设计(异步+缓存)图片加载器LruCacheImageLoader

一、LruCache

LruCache是一套内存缓存的解决方案,算法基于LRU。
LRU:Least Recently Used(近期最少使用)。LruCache基于LRU算法的缓存策略。

  1. LruCache是一个泛型类,其以强引用的方式存储外界的缓存对象。当内存缓存达到设定的最大值时,则将内存缓存中近期最少使用的对象移除,有效的避免了OOM的出现。

    Java的四种引用

一、LruCache的基本使用

LruCache一般使用来缓存图片,下面以缓存Bitmap为例

  1. 建立一个key为String类型,value为Bitmap类型的LruCache

    private LruCache<String, Bitmap> mCache;
    
  2. 初始化LruCache,并指定LruCache的缓存大小

    //获取应用程序最大可用内存
    int maxMemory = (int) Runtime.getRuntime().maxMemory();
    
    //指定缓存大小
    int cacheSize = maxMemory / 8;
    
    mCache = new LruCache<String, Bitmap>(cacheSize) {
        @Override
        protected int sizeOf(String key, Bitmap value) {
    
            //返回Bitmap的实际大小 (单位应与maxMemory一致)
            return value.getByteCount();
    
        }
    };
    
  3. 获取缓存

    mCache.get(key);
    
  4. 添加缓存

    mCache.put(key,value);
    
  5. 移除某个键的缓存

    mCache.remove(key);
    
  6. 清空缓存

    mCache.evictAll()
    

二、使用LruCache封装图片加载缓存器

根据LruCache,我们可以将它封装在LruCacheImageLoader来对图片进行缓存。设计模式为使用单例模式来设计:

在Logcat中打印异步任务个数:

package com.cxmscb.cxm.cachepro
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值