Ich war etwas verwirrt über die Unterschiede zwischen Handlers
, AsyncTask
y Threads
in Android. Ich habe eine ganze Reihe von Blogs und Fragen hier in StackOverflow gelesen.
Handler
sind Hintergrund-Threads, die Ihnen die Kommunikation mit der Benutzeroberfläche ermöglichen. Die Aktualisierung eines Fortschrittsbalkens zum Beispiel sollte über Handler
. Die Verwendung von Handlern hat den Vorteil, dass sie MessagingQueues
Wenn Sie also Nachrichten planen, mehrere Elemente der Benutzeroberfläche aktualisieren oder sich wiederholende Aufgaben durchführen möchten, können Sie dies tun.
AsyncTask
ähneln sich in der Tat, denn sie nutzen die Handler
, läuft aber nicht im UI-Thread und eignet sich daher gut zum Abrufen von Daten, z. B. zum Abrufen von Webdiensten. Später können Sie mit der Benutzeroberfläche interagieren.
Thread
kann jedoch nicht mit der Benutzeroberfläche interagieren, bietet "einfacheres" Threading und man vermisst alle Abstraktionen von AsyncTask
.
Ich möchte jedoch eine Socket-Verbindung im Dienst laufen lassen. Sollte dies in einem Handler oder einem Thread oder sogar einem AsyncTask
? UI-Interaktion ist überhaupt nicht notwendig. Macht es einen Unterschied in Bezug auf die Leistung, welche ich verwende?
Inzwischen ist die Dokumentation wurde erheblich verbessert.