2015-12-11 49 views
1

我正在開發一個android應用程序。在該應用程序中,服務器存儲要在listview的imageView中顯示的圖像。我使用picasso從服務器獲取圖像並在imageview中顯示。儘管我已經在服務器上傳了新圖像,但只有舊圖像再次顯示。我懷疑這是由於緩存在畢加索。我使用了3種方法來防止緩存:如何清除畢加索中的緩存?

Picasso.with(getActivity()).load(data.get(pos).getFeed_thumb_image()).skipMemoryCache().into(image); 

Picasso.with(getActivity()).load(data.get(pos).getFeed_thumb_image()).memoryPolicy(MemoryPolicy.NO_CACHE).into(image); 

Picasso.with(context).invalidate(imagePath); 

但是沒有結果。如何清除特定網址的畢加索緩存?

+0

當你說舊的圖像再次顯示,你的意思是你完全清除內存中的應用程序並返回到它? –

回答

0

嘗試使用類似時間的變量加載網址: 日曆urlvar = Calendar.getInstance(); int seconds = urlvar.get(Calendar.SECOND);

然後通過添加字符串來加載你的url:urlvar所以最終加載的url將例如example.com/m.png?date它將被兌換,但下一次加載日期被改變,所以url將會改變不會從現金中加載。希望工作

1

這將會在未來實現,但看到post of Jake Wharton

JakeWharton於2014年12月11日評論當前的最佳人選:

picasso.load('http://example.com/') 
    .cachePolicy(NO_CACHE, NO_STORE) 
    .networkPolicy(NO_CACHE, NO_STORE, OFFLINE) 
    .into(imageView); 

enum MemoryPolicy { 
    NO_CACHE, NO_STORE 
} 
enum NetworkPolicy { 
    NO_CACHE, NO_STORE, OFFLINE 
} 

這將是什麼除非任何人有其他想法實施。

+0

理想情況下,他的服務器應該更正緩存標頭,如果它們允許太多時間的話。 –

+0

他對'invalidate'的使用讓我懷疑他是在談論內存還是HTTP客戶端文件緩存。 –