2015-05-26 19 views
6

używam biblioteki facebook Fresco i SimpleDraweeView wyświetlania awatara obraz z pliku:Jak mogę zaktualizować zdjęcie fresku SimpleDraweeView, jeśli został ustawiony raz przez setImageURI

Uri avaURI = Uri.fromFile(new File(getCacheDir(), Constants.AVA_FILE_NAME)); 
    simpleDrawee.setImageURI(avaURI); 

ale co jeśli zmieniłem plik z obrazem (skasował poprzedni plik i utworzył ten sam z nowym obrazem), jak mogę zaktualizować (odświeżyć) SimpleDraweeView? Wciąż wyświetla starą wersję obrazu (próbowałem wyłączyć pamięć podręczną przez Fresco.getImagePipeline().evictFromMemoryCache(avaURI);, ale to nie pomogło).

Odpowiedz

12

Uważam, że jesteś na dobrej drodze. Istnieją jeszcze dwa poziomy pamięci, w których stary obraz może istnieć, skąd najprawdopodobniej zostanie przywrócony. Wydają mi się, że wygasają po 60 dniach, więc i tak trzeba je przepłukać.

Fresco.getImagePipeline().evictFromMemoryCache(avaURI); 

Fresco.getImagePipelineFactory().getMainDiskStorageCache().remove(new SimpleCacheKey(avaURI.toString())); 
Fresco.getImagePipelineFactory().getSmallImageDiskStorageCache().remove(new SimpleCacheKey(avaURI.toString())); 
+0

natknął się na ten sam problem, dowolny czystszy sposób to zrobić? –

+3

Uważam, że dali nam czystsze rozwiązanie za pomocą metody "wszystko w jednym": Fresco.getImagePipeline(). EvictFromCache (uri); – frogmanx

+0

człowieku, ty człowieku! ;) –

1
ImagePipeline imagePipeline = Fresco.getImagePipeline(); 
    imagePipeline.evictFromCache(Uri); 
    imagePipeline.clearCaches(); 
draweeView.setImageURI(Uri);