1. 程式人生 > >【Android】Picasso載入本地圖片如何清理快取cache?

【Android】Picasso載入本地圖片如何清理快取cache?

使用Picasso載入SD卡圖片的時候,Picasso也會對該圖片進行快取。所以如果該圖片即使已經變了,Picasso在載入時會仍然使用快取,而不更新圖片。

Picasso快取策略

我們都知道圖片快取使用的是Map鍵值對儲存的,這裡的Key就是載入的圖片的Url,所以如果我們使用相同的ImageUrl去載入圖片的話,如果使用了快取,Picasso會直接讀取快取的內容,而不是從SD卡、或者網路Http中重新載入。

Picasso如何跳過快取

試了很多網上推薦的方法均不見起效,最後使用了下面這種策略,也就是載入圖片時直接跳過快取

Picasso.with(getContext()).load
(imageUrl).memoryPolicy(MemoryPolicy.NO_CACHE).into(image);

注意其中的.memoryPolicy(MemoryPolicy.NO_CACHE)即是關鍵程式碼,其中memoryPolicy.NO_CACHE是指圖片載入時放棄在記憶體快取中查詢。

ps:此處的方法並不是真正的清理快取,而是跳過快取直接從源頭獲取


網上有幾種錯誤的方法如下,經驗證均不起效:

1、Picasso.with(getActivity()).invalidate(file);
2、Picasso.with(getActivity()).load(url).skipMemoryCache().into(image);