Lrucache(繼承了LinkedHashMap):
LRUCache的使用:
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... 原理:
是以接下來講一下LinkedHashMap源碼(采用雙向連結清單的雙向隊列)是怎麼實作一個删除最近最少使用資料的功能?
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... get和put方法中都調用了recordAccess方法,通過這個方法記錄下使用者通路的Entry,并把它移到隊列的尾部去
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)...
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... 分析完父類LinkedHashMap,接着分析LRUCache的源碼:
首先看LRUCache的構造方法:
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... 接下來看幾個源碼中重要的函數:
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... trimToSize();
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... DisLrucache:
原理:并沒有采用什麼LinkedHashMap的結構,就是在journal檔案中單純的存入,讀取等等操作
首先打開緩存,即擷取DisLrucache的對象(調用靜态方法open):
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... 打開之後就可以緩存中寫入,讀取,删除 :
1.寫入
先擷取一個對象用來進行DisLrucache的寫入操作
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... key就是URl經過0xFF&url移位之後結果(和HashMap一樣)
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)...
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... 讀取操作:
和寫入一樣,首
先擷取一個對象用來進行DisLrucache的讀取操作;
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)...
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)... 删除緩存:
一樣的,先擷取一個對象用來進行DisLrucache的删除操作
android volley 緩存機制,Android LRUCache(記憶體緩存)和DisLrucache(硬碟緩存) (Volley架構是網絡層擷取資料的架構)...