DiskLruCache的核心原理为,通过LinkedHashMap存储Entry(Entry中包含文件),利用LinkedHashMap按访问和插入排序的特点,在每次对DiskLruCache进行增删查改及调整大小时,调用trimToSize()函数删除使用最少的文件。
private void trimToSize() throws IOException {
while (size > maxSize) {
Map.Entry<String, Entry> toEvict = lruEntries.entrySet().iterator().next();
remove(toEvict.getKey());
}
}
具体源码分析请参考:
Android DiskLruCache 源码解析 硬盘缓存的绝佳方案