LruCache
是什么
**近期 _最少 **_使用算法,核心思想是优先淘汰掉那些近期使用最少的缓存对象。
LruCache的原理
LruCache内部有一个缓存列表,当一个缓存数据被访问的时候,这个数据就会被提到列表头部,这样的话,列表尾部的数据就是不经常使用的数据,如果内存不够的话,此时尾部的数据就会被回收。
为什么要使用它
我们需要在页面上加载网络图片,如果每次加载图片都从网络加载,有2个弊端
(1)消耗流量
(2)效率比较低
那么我们可以采用下面的方法,每次需要加载图片的时候,首先从缓存中取,如果取到就用缓存中的图片,如果没有取到,就从网络加载,加载完成以后,然后将图片缓存到本地。
而缓存图片的容器最好用的就是LruCache。
扩展
LruCache VS Map
LruCache 底层是LinkedHashMap,LruCache和Map相比,它里面存储的键值对是有序的,这样做就是为了当其中的数据被访问的时候,这个数据会被放到LruCache的头部。
为什么要用LinkedHashMap?
LinkedHashMap刚好提供LruCache需要的算法,当第三个参数为true的时候,数据在被访问的时候,会将最近访问的数据放在最后面,然后当内存不足的时候,回收对象,从前面开始删除就好。
public LinkedHashMap(int initialCapacity,
float loadFactor,
boolean accessOrder)