LruCache是Android提供的缓存工具类,其算法是最近最少使用算法。它把最近使用的对象用“强引用”存储在LinkedHashMap中,并且把最近最少使用对象在缓存值达到预设定值前就从内存中移除。
1.使用方法
|
|
- 需要提供一个缓存容量作为构造参数。(必填)
- 覆写sizeOf()方法,自定义设计一条数据存入的容量计算,如果不覆写就无法预知数据的容量,不能保证缓存容量限定在最大容量内。(必填)
- 覆写entryRemoved()方法,如果你cache的某个值要明确释放,这个方法会在元素被put或者remove时调用。(选填)
2.源码分析
LruCache利用LinkedHashMap的基于访问顺序(accessOrder = true)再加上对其数据操作加锁实现缓存策略的。
|
|
|
|
第一个参数 initialCapacity
用于初始化该 LinkedHashMap 的大小。
先简单介绍一下 第二个参数 loadFactor
,这个其实的 HashMap 里的构造参数,涉及到扩容问题,比如 HashMap 的最大容量是100,那么这里设置0.75f的话,到75容量的时候就会扩容。
主要是第三个参数 accessOrder=true
,这样的话 LinkedHashMap 数据排序就会基于数据的访问顺序,从而实现了 LruCache 核心工作原理。
|
|