一、源码及解析
因为源码不多,就直接全部贴出来分析。源码及分析如下:
|
|
以上就是全部源码和分析注释。
二、简单使用
举个例子,图片缓存:
|
|
1.初始化
LruCache<String, Bitmap> mLruCache = new BitmapLruCache();
2.将图片写入缓存中
mLruCache.put(key, bitmap);
3.从缓存中读取图片
mLruCache.get(key, bitmap);
4.将图片从缓存中删除
mLruCache.remove(key);
使用还是很简单的。
三、小结
LruCache实现的核心是LinkedHashMap,为什么会用LinkedHashMap?
因为LinkedHashMap是由数组+双向链表的数据结构来实现的。其中双向链表的结构可以实现访问顺序和插入顺序.那么利用这个特性就可以实现LRU了。
看一下LinkedHashMap的构造方法,
|
|
参数在LruCache中已经分析过了,再说一遍具体含义。
initialCapacity:这个哈希表的初始容量
loadFactor:加载因子
accessOrder:true,访问顺序;false,插入顺序。
访问顺序下,新增的元素或者最近访问的元素都会在链表的尾节点,移除的最近最少使用的元素即是链表的头部。
其实很简单。