LRU 最近最少使用
LruCache采用这种算法进行内存的缓存的移除
内部采用LinkedHashMap以强引用的方式存储外界的缓存对象,实现比较简单
LruCache的初始化
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); int cacheSize = maxMemory / 8; LruCache<String,Bitmap> mMemoryCache = new LruCache<String,Bitmap>(cacheSize) { @Override protected int sizeOf(String key, Bitmap value) { return value.getRowBytes() * value.getHeight() / 1024; } };
value.getRowBytes() 是bitmap每一行占的空间
从中获取删除就是正常的map操作了。
有时间一定要看看他的源码!因为Android3.1开始,他就是Android源码的一部分了。