</br>
什么是LruCache
</br>
LruCache,Least Recently Used,“最近最少使用緩存”,是一種基于Lru算法實現(xiàn)的緩存機制。
它自Android3.1開始出現(xiàn),通過support-v4兼容包可以兼容早期的Android版本。因此,如果需要兼容3.1以前的版本,建議使用v4兼容包中的LruCache,而不要直接使用Android3.1提供的LruCache。
</br>
LruCache是怎樣工作的
</br>
Lru算法的原理:如果當(dāng)前數(shù)據(jù)的量大于設(shè)定的最大值,則把最近最少使用的數(shù)據(jù)移除掉。這樣就只保留最頻繁使用的數(shù)據(jù)。
LruCache是一個泛型類,它內(nèi)部采用一個LinkedHashMap以強引用的方法存儲外界的緩存對象,其提供了get和put方法來完成緩存的獲取和添加操作。當(dāng)緩存滿時,LruCache會移除較早使用的緩存對象,然后再添加新的緩存對象。
使用LinkedHashMap有兩大好處:
一是它本身已經(jīng)實現(xiàn)了按照訪問順序的存儲。也就是說,最近讀取的會放在最前面,最最不常讀取的會放在最后(當(dāng)然,它也可以實現(xiàn)按照插入順序存儲)。
第二,LinkedHashMap 本身有一個方法用于判斷是否需要移除最不常讀取的數(shù),但是,原始方法默認(rèn)不需要移除(這時,LinkedHashMap 相當(dāng)于一個linkedlist),所以,我們需要 override 這樣一個方法,使得當(dāng)緩存里存放的數(shù)據(jù)個數(shù)超過規(guī)定個數(shù)后,就把最不常用的移除掉。
</br>