問題:上傳頭像成功後,頭像的url沒變,載入頭像時還是從緩存中根據url載入以前的圖片。 這個問題,很多人遇到過。也受到很多同行的啟發。 圖片url不變,感覺不是很合理,這樣會把緩存搞亂。 但是,作為程式員,我還是得好好想想改怎麼解決這個問題。 1.既然是緩存引起的問題,那我首先考慮的是清除緩存。 ...
問題:上傳頭像成功後,頭像的url沒變,載入頭像時還是從緩存中根據url載入以前的圖片。
這個問題,很多人遇到過。也受到很多同行的啟發。
圖片url不變,感覺不是很合理,這樣會把緩存搞亂。
但是,作為程式員,我還是得好好想想改怎麼解決這個問題。
1.既然是緩存引起的問題,那我首先考慮的是清除緩存。
使用Picasso.with(context).invalidate(path),毫無效果,
再加上mClient.cache().delete();也是無能為力。
我想這應該是記憶體緩存中還有對應圖片的問題。。。
不過貌似沒有提供清除記憶體緩存的辦法。。。
這道題太難了,太難了,我不會做。。。
還是換個思路吧
2.清除緩存的路走不通,那就換條路走。
我能否不從緩存中讀取數據,直接從網路去圖片呢?
這個比較簡單,Picasso有提供方法:
Picasso.with(context)
.load(url)
.fit()
.memoryPolicy(MemoryPolicy.NO_CACHE)
.networkPolicy(NetworkPolicy.NO_CACHE)
.into(imageView)
試了一下,可以正常載入頭像。
可是,每次都從網路下載圖片,是不是太浪費流量了,而且體驗效果也不是很好。
我這邊只是在上傳圖片成功後才強制從網路獲取圖片,其他地方都用緩存。
我想,這已經滿足我現階段的需求了。
Tips:好記星不如爛筆頭,我又來灌水了~~~