2012-04-12 17 views
2

Ich bin mir bewusst, dass dies eine sehr dumme Frage ist, aber ich kann den Punkt von Handlern nicht vollständig verstehen. Ich weiß, die Idee ist, dass Handler im Hauptthread ausgeführt werden, und sie werden am häufigsten zusammen mit Worker-Threads verwendet, aber warum kann der Worker-Thread nicht einfach Methoden für die aufrufende Aktivität aufrufen, anstatt die Aktivität zusammen mit einem Handler zu erstellen um Nachrichten zu erhalten?Der Punkt der Handler?

Noch einmal, ich entschuldige mich für die Ignoranz meiner Frage, aber alles, was ich online gefunden habe, ist Tutorials zur Verwendung von Handlern und mein Pro Android 3 Buch klärt meine Frage nicht auf (oder ich bin zu dumm, das zu verstehen es richtig!)

Oder warum sie über AsyncTasks, die die Benutzeroberfläche problemlos ändern können, verwenden?

Vielen Dank.

Antwort

5

Bei der Verwendung von Handler (oder Nachricht) wird jede Aufgabe "serialisiert". Dies hat den Vorteil, dass es KEINE Nebenläufigkeit gibt und daher nicht gesperrt werden muss. Es ist viel einfacher, ein nachrichtengesteuertes System stabiler zu machen als ein multi-threaded System.

By the way AsyncTask Handlers verwendet auch

Handler Mit Ihnen mehr Flexibilität direkt geben. Zum Beispiel könnten Sie eine Nachricht planen, die in Zukunft gesendet werden soll. Oder Sie können eine geplante Nachricht abbrechen.

Handler sind ein sehr mächtiges Werkzeug.

+0

Klarer jetzt. Mir war nicht bekannt, dass AsyncTasks Handler verwendet haben. Also ist die Verwendung einer AsyncTask wie eine Kurzschrift für das Schreiben eines bestimmten Handlers und dessen Verwendung? –

+1

AsyncTask abstrahiert Themen wie Threading, Handler, Nachrichten, Nachrichtenwarteschlangen und macht diese Sachen für den Entwickler "unsichtbar". Es ist eine komfortable Möglichkeit, lange Operationen außerhalb des UI-Threads auszuführen. Mit Handlern haben Sie "volle" Kontrolle. Es gibt Aufgaben, wo Sie vielleicht brauchen, dass – 207

+1

@SoManyGoblins ja, asynctask ist nur ein schicker Handler + thread :) und vertrauen Sie mir, Sie wollen nicht mit gleichzeitiger Programmierung zu stören :) – Warpzit

Verwandte Themen