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);
    }

}
posted @ 2017-08-03 21:41  just_yang  阅读(2106)  评论(0编辑  收藏  举报