Ich frage mich, ob es besser ist, Bilder in einer Listenansicht aus dem Web zu laden, wenn die Anzahl der Threads, die gleichzeitig oder nacheinander ausgeführt werden, im Stapel durchläuft?
Ich habe bemerkt (aber ich weiß nicht, ob das wirklich die Implementierung ist) von der Youtube-App, dass die Bilder im Batch geladen werden und es ist irgendwie schnell. Selbst wenn Sie nicht nur Bilder laden, sondern auch Daten aus dem Internet anfordern möchten. Hat jemand eine Idee?
"besser" auf welche Weise? Leistung weise? Entwicklerfreundlichkeit? Usability weise?
Ein paar grundlegende Dinge zu beachten:
getView()
Ihrer ListAdapter
, überprüfen Sie, ob das Bild bereits geladen wurde, und wenn nicht, verwenden Sie einen Thread aus dem Thread-Pool, um die Arbeit zu erledigen. Der beste Weg, diese Art von Funktionalität zu haben, besteht darin, dass die Bilder in der Liste "lazy load" haben. Wenn Ihre Liste eine feste Größe hat, führen Sie mehrere Threads aus (einen für jedes sichtbare Listenelement), laden Sie die Bilder herunter und aktualisieren Sie die Bilder in der Liste. In dieser Zwischenzeit muss ein Dummy-Bild an der gleichen Stelle platziert werden.
Halten Sie nur eine feste Anzahl von Bildkomponenten für Ihre Liste bereit, vorzugsweise ein paar mehr als die gesamten sichtbaren Bilder an einem beliebigen Punkt. Überprüfen Sie jedes Mal, wenn die Liste gescrollt wird, ob das Bild, das dem bestimmten Listenelement entspricht, existiert oder nicht. Wenn ja, Anzeige. Ist dies nicht der Fall, zeigen Sie das Dummy-Image an, führen Sie den Thread aus, um das Image im Hintergrund zu laden, und aktualisieren Sie das Listenbild, sobald der Download abgeschlossen ist.
Um den Speicher weiter zu speichern, können Sie 'SoftReferences' für die Bildkomponenten verwenden. Dadurch kann der Garbage Collector die Bilder entfernen, die gerade nicht auf dem Bildschirm angezeigt werden.
Ich habe versucht, ein einfaches faules Listenbeispiel zu erstellen, das als Referenz verwendet werden kann, hier ist es Lazy Laden von Bildern in ListView
Dies ist möglicherweise das, wonach Sie suchen, verwendet einen Fixed-Thread-Pool und einen Soft-Cache, um Bilder zu laden.
Tags und Links android