Ich habe über die Unterschiede leicht verwirrt zwischen Handlers
, AsyncTask
und Threads
in Android. Ich habe hier in StackOverflow einige Blogs und Fragen gelesen.
Handler
sind Hintergrundthreads, mit denen Sie mit der Benutzeroberfläche kommunizieren können. Das Aktualisieren eines Fortschrittsbalkens sollte beispielsweise über erfolgen Handler
. Die Verwendung von Handlern bietet Ihnen den Vorteil MessagingQueues
, dass Sie Nachrichten planen oder mehrere Benutzeroberflächenelemente aktualisieren oder sich wiederholende Aufgaben ausführen möchten.
AsyncTask
sind ähnlich, in der Tat verwenden sie Handler
, werden aber nicht im UI-Thread ausgeführt, sodass es gut zum Abrufen von Daten, zum Beispiel zum Abrufen von Webdiensten, geeignet ist. Später können Sie mit der Benutzeroberfläche interagieren.
Thread
Sie können jedoch nicht mit der Benutzeroberfläche interagieren, bieten "grundlegenderes" Threading und Sie vermissen alle Abstraktionen von AsyncTask
.
Ich möchte jedoch, dass eine Socket-Verbindung in Betrieb genommen wird. Sollte dies in einem Handler oder einem Thread oder sogar einem ausgeführt werdenAsyncTask
? Eine Interaktion mit der Benutzeroberfläche ist überhaupt nicht erforderlich. Macht es einen Unterschied in Bezug auf die Leistung, die ich verwende?
Inzwischen wurde die Dokumentation erheblich verbessert.
Handler
ist kein Thread und führt nichts aus. Es ist nur ein Mittel, um Nachrichten von einem sicher weiterzuleiten Thread an die Nachrichtenwarteschlange eines anderen Threads zu übergeben . Also, in der Regel, (mindestens) zwei Fäden müssen noch erstellt werden , die dann verwenden Sie einen Handler, aber der Handler kann nicht alles selbst ausführen.