In der Benutzeroberfläche habe ich für einige Hintergrundarbeiten eine separate verwendet Thread
. Aber wie von anderen vorgeschlagen, benutze ich jetzt AsyncTask
.
Was ist der Hauptunterschied zwischen a Thread
und an AsyncTask
?
In welchem Szenario sollte ich ein Thread
oder ein verwenden AsyncTask
?
Antworten:
Für lang laufende oder CPU-intensive Aufgaben gibt es grundsätzlich zwei Möglichkeiten: Java-Threads und die native AsyncTask von Android.
Keiner ist notwendigerweise besser als der andere, aber es ist wichtig zu wissen, wann jeder Anruf verwendet werden muss, um die Leistung des Systems zu Ihrem Vorteil zu nutzen.
Verwenden Sie AsyncTask für:
Verwenden Sie Java-Threads für:
Und es gibt viele gute Ressourcen über das Internet, die Ihnen helfen können:
http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html
quelle
AsyncTask
mit einem eigenen Scheduler zu verwenden.Wenn Sie Java-Threads verwenden, müssen Sie die folgenden Anforderungen in Ihrem eigenen Code erfüllen:
quelle
Faden
AsyncTask
quelle
Weitere Informationen finden Sie hier
quelle
Faden:
Thread
sollte verwendet werden, um lang laufende Vorgänge vom Hauptthread zu trennen, damit die Leistung verbessert wird. Aber es kann nicht elegant abgebrochen werden und es kann keine Konfigurationsänderungen von Android verarbeiten. Sie können die Benutzeroberfläche nicht von aktualisierenThread
.AsyncTask
kann verwendet werden, um Arbeitselemente mit einer Dauer von weniger als 5 ms zu bearbeiten. MitAsyncTask
können Sie die Benutzeroberfläche im Gegensatz zu Java aktualisierenThread
. Viele lang laufende Aufgaben beeinträchtigen jedoch die Leistung.Sie haben nur noch wenige Alternativen zu beiden.
HandlerThread / Handler und ThreadPoolExecutor
Weitere Informationen finden Sie im folgenden Beitrag:
Handler vs AsyncTask vs Thread
quelle