1.linkedhashmap——
2.cleanupcallable(涉及到threadpoolexecutor——
private
final callablecleanupcallable = new callable()
trimtosize();
if (journalrebuildrequired())
}return
null;
}};
重點在trimtosize上(maxsize是建構函式傳入的,size指的是所有entry裡面file的總長度)
private
void
trimtosize() throws ioexception
}
先把size減小,然後把快取檔案置空,最後remove key
public
synchronized
boolean
remove(string key) throws ioexception
for (int i = 0; i < valuecount; i++)
size -= entry.lengths[i];
entry.lengths[i] = 0;
}redundantopcount++;
lruentries.remove(key);
if (journalrebuildrequired())
return
true;
}
總結,由於linkedhashmap的特殊性,完全沒有必要增加執行緒池等操作,直接remove就可以了 Glide快取配置
glide依賴 這裡用的是android studio3.0 設定快取大小為20mb int memorycachesizebytes 1024 1024 20 20mb 設定記憶體快取大小 builder.setmemorycache new lruresourcecache memorycach...
Glide 快取邏輯
glide 的快取策略和picasso 的快取策略上有哪些不同,picasso 是被動清除快取,也就是依賴於lru 的 容量來清理 glide 可以在lru的基礎上新增了主動清理的功能。一共分為三層 private engineresource getengineresourcefromcache ...
Glide 快取使用
開發中遇到的問題,使用glide載入網路,每次更換頭像後返回頁面要同步顯示已改過的頭像。我們服務端是每次上傳的個人頭像只是替換原圖,路徑並不變。這就導致glide載入時會使用快取的,導致頁面顯示不同步。針對這個問題,我做了如下優化去掉磁碟快取 glide.with this load imagepa...