一、LruCache
LruCache是一套内存缓存的解决方案,算法基于LRU。
LRU:Least Recently Used(近期最少使用)。LruCache基于LRU算法的缓存策略。
LruCache是一个泛型类,其以强引用的方式存储外界的缓存对象。当内存缓存达到设定的最大值时,则将内存缓存中近期最少使用的对象移除,有效的避免了OOM的出现。
一、LruCache的基本使用
LruCache一般使用来缓存图片,下面以缓存Bitmap为例
建立一个key为String类型,value为Bitmap类型的LruCache
private LruCache<String, Bitmap> mCache;
初始化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(); } };
获取缓存
mCache.get(key);
添加缓存
mCache.put(key,value);
移除某个键的缓存
mCache.remove(key);
清空缓存
mCache.evictAll()
二、使用LruCache封装图片加载缓存器
根据LruCache,我们可以将它封装在LruCacheImageLoader来对图片进行缓存。设计模式为使用单例模式来设计:
在Logcat中打印异步任务个数:
package com.cxmscb.cxm.cachepro