LruCache缓存机制
LruCache:
Android提供的使用了(Least Recently Used)近期最少使用算法的缓存类
内部基于LinkedHashMap实现
实现这个主要需要重写
- 构造时需要确定Cache的最大内存,一般通过
//获取程序最大可用内存
int max = (int)Runtime.getRuntime().maxMemory();
//取可用内存的四分之一做缓存
int size = max/4;
-
sizeOf()
方法:在添加value到Cache时会被调用,需要返回添加进数据的字节大小 -
在
put(key,value)
添加时先通过get(key)
判断是否已经有key对应的value存在
在内存缓存图片的简单实现:
public class MyLruCache extends LruCache<String, Bitmap> {
private static MyLruCache myLruCache;
private MyLruCache(int maxSize) {
super(maxSize);
}
public static MyLruCache getMyLruCache() {
if (myLruCache == null) {
int maxMemory = (int) Runtime.getRuntime().maxMemory();
int maxSize = maxMemory / 4;
myLruCache = new MyLruCache(maxSize);
}
return myLruCache;
}
//每次存入bitmap时调用,返回存入的数据大小
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
//添加
public void add(String key, Bitmap bitmap) {
if (get(key) == null) {
put(key, bitmap);
}
}
//获取
public Bitmap getBitmap(String key) {
return get(key);
}
}