2014-03-02 4 views
14
Arbeits

ich vor dem Laden eines Bildes folgenden Code aufrufen:Universal-Image Loader - einzelnes Bild aus dem Cache zu entfernen nicht

String url = getUrlImageIcon(); 
MemoryCacheUtil.removeFromCache(url, ImageLoader.getInstance().getMemoryCache()); 
DiscCacheUtil.removeFromCache(url, ImageLoader.getInstance().getDiscCache()); 

ImageLoader.getInstance().displayImage(url, imageView, listener); 

Mein Problem ist, das ist nicht das Bild aus dem Cache löscht, wird das Bild Loader noch angezeigt wird die altes Bild danach ... Das alte Bild existiert nicht mehr auf dem Server ...

Wie kann ich alle zwischengespeicherten Dateien aus einem Bild korrekt entfernen?

PS: Ich bin die up-to-date 1.9.1 Version mit ...

Antwort

7

Laut Entwickler dieser Bibliothek ist Lösung ganz einfach. Sie müssen lediglich das zwischengespeicherte Bild aus dem Speicher und auch von der Festplatte löschen. Wie das geht, wird unten gezeigt.

File imageFile = imageLoader.getDiscCache().get(imageUri); 
if (imageFile.exists()) { 
    imageFile.delete(); 
} 
MemoryCacheUtils.removeFromCache(imageUri, imageLoader.getMemoryCache()); 

Snippet oben ist von this Problem.

+1

* MemoryCacheUtils –

+0

UIL verfügt jetzt über DiskCacheUtils. Daher ist es nicht erforderlich, den Festplattenabschnitt manuell auszuführen. Prüfe @rohits Antwort. – Tiago

15

Was @vanomart beantwortet ist perfekt, nur um die Antwort zu aktualisieren. Derzeit unterstützt UIL,

MemoryCacheUtils.removeFromCache(imageUri, imageLoader.getMemoryCache()); 
DiskCacheUtils.removeFromCache(imageUri, imageLoader.getDiskCache()); 

So gibt es bessere Möglichkeit, Datenträgercache zu löschen.

+0

Es ist veraltet. –

+0

Möglicherweise haben Sie "Disc" anstelle von "Disk" verwendet. 'Disk' ist nicht veraltet. – rohit

+0

Sie sparen meinen Job! – yuchaozh