Was ist der beste Weg, um eine Download-Warteschlange in Android zu implementieren?
Verwende ein IntentService
. Er stellt die Warteschlange und den Hintergrundthread für Sie bereit. Sie müssen lediglich Ihre Download-Logik in onHandleIntent()
einfügen. Siehe hier für ein Beispielprojekt , das dies demonstriert.
Ich würde vorschlagen, das java.util.concurrent-Paket zu betrachten und genauer zu lesen unter Executors
Sie können einen ExecutorService erstellen, der nur eine Anzahl von runfähigen Objekten gleichzeitig ausführt und die restlichen Aufgaben automatisch in die Warteschlange stellt. Sobald einer der ausgeführten Threads die Ausführung beendet, wird das nächste Runnable-Objekt in der Warteschlange zur Ausführung abgerufen.
Die Verwendung eines IntentService macht es ziemlich schwierig, die Löschung zu unterstützen. Es ist nur etwas, was Sie beachten müssen. Wenn Sie können, ist es API Level 9, Sie werden besser Ссылка
verwendenAb API 11 empfiehlt es sich, einen FixedThreadPool mit asynchronen Tasks zu verwenden. Tun Sie einmal:
%Vor%Dabei steht 3 für die Anzahl der Downloads, die gleichzeitig ausgeführt werden sollen. Wenn bereits 3 Downloads ausgeführt werden, wird die Task in die Warteschlange gestellt und die Task später automatisch ausgeführt. Starten Sie Ihre asynchronen Aufgaben mit:
%Vor%Params ist wahrscheinlich die URL, zu der Sie eine Verbindung herstellen möchten. Sie können es in onPostExecute Ihrer asynctask auslesen und mit dem Server eine HttpURLConnection Verbindung herstellen .
Stellen Sie sicher, dass Sie dies beim Herunterfahren aufrufen:
%Vor%