LruCache可以翻譯為最近最少使用緩存,它用強引用保存需要緩存的對象,它內(nèi)部維護一個隊列(實際上是LinkedHashMap內(nèi)部的雙鏈表,不支持線程安全,LruCache對它進行封裝,添加了線程安全操作),當其中的一個值被訪問時,它被放倒隊列尾部,當緩存將滿時,隊列頭部(也就是最近最少被訪問的)被丟棄,之后可以被垃圾回收。
LruCache比較重要的幾個方法如下:
●public final Vget(K key)
返回cache中key對應(yīng)的值,調(diào)用這個方法后,被訪問的值會移動到隊列的尾部。
●public final V put(K key,V value)
根據(jù)key存放value,存放的value會移動到隊列的尾部
●protect int sizeOf(K key,V value)
返回每個緩存對象的大小,用來判斷緩存是否快要滿了,這個方法必須重寫。
●protect void entryRemoved(boolean evicted,K key,V oldValue,V newValue)
當一個緩存對象被丟棄時調(diào)用的方法,這是個空方法,可以重寫,不是必須的,第一個參數(shù)為true:當緩存對象是為了騰出空間而被清理時候。第一個參數(shù)為false:緩存的對象entry被remove移除或者被put覆蓋時候。
LruCache原理
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。