Glide快取機制

2021-08-07 07:45:12 字數 878 閱讀 2471

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...