天天看點

android Glide加載圖檔緩存重複問題解決

1、想要重新加載圖檔

(URL沒變,圖檔變了)

2、發現無法重新加載,以為是有緩存的原因

于是使用clear(view),但是隻能清除控件上的圖檔,并不能真的清除緩存

又使用clearMemory(),還是不行

又使用clearDiskCache(),出現報錯,提示要在background thread背景線程中調用,卧槽….

最後在Stack Overflow找到方法,如下

Glide.with(this)

.load(URL)

.signature(new StringSignature(UUID.randomUUID().toString())) // 重點在這行

.error(R.mipmap.ic_launcher)

.into(setting_face_img);

3、原因

Glide中的圖檔緩存key的生成是通過一個雜湊演算法來實作的,是以很難手動去删除指定的圖檔緩存

Glide的圖檔緩存都有對應的唯一辨別符,如果是相同的,就不加載調用緩存

不過改變辨別符很困難,是以Glide提供signature()方法,來附加一個資料到緩存key中

如果連結是檔案,就用StringSignature,

比如.signature(nre StringSignature(yourVersionMetadata)).

如果連結是多媒體,就用MediaStoreSignature,

比如.signature(new MediaStoreSignature(mimeType, dateModified, orientation))