Universal Image Loader: Kann ich Cache verwenden, aber auch aktualisieren?

8

Ich lade dynamisch generierte Bilder, damit ich immer auf dem neuesten Stand bin. Aber sie brauchen Zeit zum Laden, also möchte ich auch eine zwischengespeicherte Version anzeigen, während die aktualisierte nicht kommt. Wie kann ich das mit dem Universal Image Loader machen?

Genauer gesagt, wenn ich "displayImage" anrufe, möchte ich Folgendes tun:

  1. Wenn ein zwischengespeichertes Bild vorhanden ist, zeigen Sie es sofort an.
  2. Starten Sie den Download von der angegebenen URL sowieso.
  3. Wenn das Laden des Bildes abgeschlossen ist, zeigen Sie es in der Ansicht an, die das zwischengespeicherte Bild ersetzt.
  4. Aktualisiere den Cache.
Vituel 27.09.2013, 15:10
quelle

2 Antworten

26

Also habe ich am Ende einen ImageLoadingListener wie folgt benutzt:

onLoadingStarted: Beim Laden nach dem Cache suchen.

onLoadingComplete: Wenn kein Cache gefunden wurde, dann tue nichts. Die Anfrage wird an das Netzwerk gesendet und der Cache wird natürlich aktualisiert. Andernfalls leeren Sie den Cache und rufen Sie erneut displayImage auf (es ist diesmal kein Listener erforderlich). Das zwischengespeicherte Bild wird normalerweise in der Ansicht angezeigt. Wenn der 2. Ladevorgang abgeschlossen ist, werden die Ansicht und der Cache aktualisiert.

%Vor%     
Vituel 15.10.2013, 16:18
quelle
1

Sie können den ImageLoadingListener verwenden. Diese Schnittstelle verfügt über 4 Methoden zum Überschreiben: onLoadingStarted, onLoadingFailed, onLoadingComplete, onLoadingCancelled. In onLoadingStarted können Sie das Bild als Zwischenspeicher speichern und nach Abschluss des Vorgangs ändern Sie es.

So würde der Anruf so aussehen:

%Vor%     
KennyC 27.09.2013 16:10
quelle