Ich habe derzeit einen ListView mit einem benutzerdefinierten Adapter, der Informationen erhält, die den Inhalt der Zeilen asynchron beschreiben. Teil jeder Zeile ist eine Bild-URL, die ich asynchron herunterladen und dann anzeigen möchte.
Mein aktueller Plan für eine Strategie zum Herunterladen dieser Bilder lautet:
Ich plane auch, ausstehende Downloads zu beenden, wenn das Activity-Objekt, das die onDestroy () - Methode der ListView besitzt (oder möglicherweise sogar in der onPause () -Methode) aufgerufen wird, aber am wichtigsten ist, dass ich den Download von ausstehenden Images abbrechen möchte wenn die Reihe vom Bildschirm verschwindet. Ich könnte den Download eigentlich nur nach einer kurzen Verzögerung abbrechen, so dass er wieder aufgenommen werden kann, ohne Bandbreite zu verschwenden, wenn die Zeile schnell wieder auf dem Bildschirm erscheint.
Ich bin jedoch über einige Dinge unsicher:
Auch Kommentare zur gesamten Strategie wären willkommen.
Ich glaube nicht, dass der Aufruf von notifyDataSetChanged () wirklich benötigt wird ... Ich würde es so machen:
Ich denke, es wäre so ziemlich (einige Fälle könnten passieren) ...
Ich verwende die Eigenschaften getFirstVisible und getLastVisible AdapterView, um die sichtbaren Zeilen zu erkennen und Anfragen in einen Stapel fester Größe zu stellen.
Mein Projekt ist Open Source und hat eine permissive Lizenz, wenn Sie es verwenden möchten: Ссылка
-Travis
Ich fand das Remote Resource Management / Fetching im Quellcode von Foursquared sehr hilfreich:
Es speichert Bilder auf dem Datenträger und verarbeitet alle drei Ihrer Feature-Anforderungen. Sehen Sie sich einen Adapter für die Verwendung an.
Wenn Sie einen Download abbrechen möchten, wenn eine Zeile aus dem Bildschirm verschwindet, müssen Sie das selbst erledigen.