當我們使用Glide框架去加載圖片時,使用時非常方便的。但是有一個問題,就是對於同一個url對於glide是不會加載兩遍的。因爲glide默認開啓緩存機制,爲了節省流量glide會使用緩存裏的圖片。但是我們不想這樣,我們想要更新。
解決方法一:取消緩存機制,示例代碼如下:
Glide.with(getContext()).load(path) .skipMemoryCache(true) // 不使用內存緩存
.diskCacheStrategy(DiskCacheStrategy.NONE).into(headImage);
這種方法雖然解決了問題,可也是個相當糟糕的方法。因爲除了更新時時需要重新加載,其他情況都是不要的,其他情況完全可以利用緩存機制來達到節省流量的效果。所以這個方法很不好。
解決方法二:簽名法。示例如下:
SharedPreferences pref=
getActivity().getSharedPreferences("updateImageKey",MODE_PRIVATE);
String updateTime=pref.getString("updateTime",System.currentTimeMillis()+"");
Glide.with(getContext()).load(p).signature(new StringSignature(updateTime)).into(Image);
我們每次加載圖片時都往裏面寫一個簽名這個簽名如果與上次的一致就是不去更新,如果不一致就是要更新。這個簽名可以是時間戳。所以當我們想讓圖片更新時就在signature(new StringSignature(updateTime))寫一個與上次寫入的不一樣的簽名就行了。