DiskLruCache的核心原理為,通過LinkedHashMap存儲Entry(Entry中包含文件),利用LinkedHashMap按訪問和插入排序的特點,在每次對DiskLruCache進行增刪查改及調(diào)整大小時,調(diào)用trimToSize()函數(shù)刪除使用最少的文件。
private void trimToSize() throws IOException {
while (size > maxSize) {
Map.Entry<String, Entry> toEvict = lruEntries.entrySet().iterator().next();
remove(toEvict.getKey());
}
}
具體源碼分析請參考:
Android DiskLruCache 源碼解析 硬盤緩存的絕佳方案