Ich habe über die Unterschiede leicht verwirrt zwischen Handlers, AsyncTaskund Threadsin Android. Ich habe hier in StackOverflow einige Blogs und Fragen gelesen.
Handlersind 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.
AsyncTasksind ä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.
ThreadSie 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.
Handlerist 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.
