5

Ich möchte wissen, welche Dateien, asynchrone Task oder Service besser heruntergeladen werden kann?Async-Task versus Service zum Herunterladen von Daten

Meine App hat acht Tasten, von denen man einen direkten Download startet (welcher Download hat ~ 10MB). Wenn der Benutzer auf eine Schaltfläche oder mehr klickt, um Daten herunterzuladen, ist es besser, asynchrone Aufgaben oder Dienste zu verwenden?

Danke!

Antwort

5

In jedem Fall sollten Sie AsyncTask verwenden, da sogar der Dienst im Hauptthread (GUI) ausgeführt wird, in dem keine Vernetzung erfolgen sollte. Ob die AsyncTask in einem Dienst oder einer Aktivität ausgeführt wird, hängt davon ab, ob der Download im Hintergrund fortgesetzt werden soll.

+0

Dank @StenSoft zu tun, also wenn die apps geht in den Hintergrund oder der Benutzer wechselt zu einer anderen Aktivität, stoppt die asynchrone Task? – Caaarlos

+1

Nein, aber ohne einen Dienst kann die gesamte Anwendung jederzeit im Hintergrund vom System beendet werden. – StenSoft

+0

hmm weiß, ich verstehe, was ich in welchem ​​Moment verwenden muss! Also werde ich AsyncTask verwenden. Sie haben meine Zweifel gelöst, danke StenSoft !! – Caaarlos

1

AsyncTask-AsyncTask manipulieren Fäden und/oder Handler, wenn Sie tun können, das besser mit Looper und Sachen, warum die Mühe? AsyncTask ist als Hilfsklasse für Thread und Handler gedacht und sollte idealerweise für kurze Operationen (höchstens ein paar Sekunden) verwendet werden. .. Wie kann man im Produktionsmodus feststellen, ob es nicht lange dauern wird? wahrscheinlich schlechtes Netzwerk, langsames Netzwerk, gestautes Netzwerk, Telefonneustart - und alle diese werden wahrscheinlich Ihren Download entweder korrupt oder unvollendet machen. Ich bin ein Benutzer von Anwendungen, und ich werde sauer, wenn ich Bündel auf nichts verschwenden.

wenn Sie mich fragen, verwendet

Dienst - Service gemacht wird, unabhängig davon zu laufen, was app/Bildschirm sichtbar und machen, wenn mit dem UI kommunizieren, wenn es nur zur Verfügung, wenn nicht mit Download fortsetzen und speichern, AsyncTask stellt kein generisches Threading-Framework dar. verwende immer Fäden, es ist cool, wir alle lieben es.

1

alle obigen Antworten haben gute Punkte. aber das Problem des Lebenszyklus ist das Wichtigste, was Sie beachten sollten. Nehmen wir zum Beispiel an, Sie verwenden asyncTask. So beginnt der Benutzer das Herunterladen und plötzlich dreht er/sie den Bildschirm und weil Sie das Life-Cycle an activityasyncTask gebunden Betrieb wird gestartet und führen zu zwanghaften 10 MB Download. In Anbetracht dessen sollten Sie service und asyncTask zusammen verwenden, um das Problem des Lebenszyklusproblems und der Probleme mit dem UI-Thread-Netzwerk aufrechtzuerhalten.

Update: Intent-Service ist eine bessere Lösung, weil es Anfragen in einem eigenen Thread empfängt und offline geht, wenn es nichts hat

Verwandte Themen