2017-02-26 2 views
1

Ich habe eine ListView in meinem Fragment. Der Inhalt von ListView wird vom Webserver heruntergeladen. Natürlich lade ich nicht alles auf einmal herunter - ich werde zum Beispiel 30 Artikel herunterladen. Und, onScroll Ich werde die n-th Seite herunterladen.Dynamisch und faul ListView

  1. Wie löst man es?

Ich sehe zwei Lösungen:

A. ich einen Hintergrund-Thread und haben damit begonnen, bewegen sie die nächste Seite herunterlädt und auf UI-Thread übergeben. Es scheint eine gute Lösung zu sein, da ich einen Thread zum Herunterladen von Elementen habe.

B. Ich führe AsyncTask onScroll. Es scheint eine schlechtere Lösung zu sein - jedes Scroll = Erstellen eines neuen Threads (es ist relativ teuer).

Was denkst du? Was ist die beste Lösung in Android?

+0

Sie scheinen sich für Lösung A entschieden zu haben. Aber ich denke, es könnte ineffizient sein, wenn Sie eine einzelne Seite auf jeder Rolle herunterladen müssen. Wie wäre es mit dem Herunterladen und Caching? – afaolek

+0

Normalerweise verwende ich die Lösung A. Sie können die andere App überprüfen, wenn Sie bis zum Ende der Liste scrollen, wird es die neue Liste der nächsten Seite bekommen. –

Antwort

0

Beide beschriebenen Ansätze sind in Ordnung. AsyncTask ist gut, weil es eine eingeschränkte Ausführung hat - Sie müssen seinen Zustand nicht viel verwalten. Also ist es in Ordnung, es zu erstellen und zu starten. Aber im Fall von Thread müssen Sie es live halten, die Zustellung der Anfrage verwalten und irgendwie Informationen an den UI-Thread weiterleiten. Also wäre das einfachere Erstellen AsyncTask. Ihre Lösung sollte nicht mehr als eine Last gleichzeitig erstellen - wenn sie eine Art Grenze darstellt.

Sie könnten auch andere Lösungen für Infinite Scrolling für Android suchen. Here ist eine gute Ressource zu lesen.