Hörer vs Handler in Android

8

Was ist der Unterschied zwischen einem Listener und einem Handler?

Ich habe viel gesucht, aber ich konnte keine passende Erklärung finden. Wo verwende ich einen Listener und wo verwende ich einen Handler in Android?

Ich habe auch den folgenden Link durchsucht:

Sind Event-Handler , Event-Listener und Event-Registrierung beziehen sich alle auf das Gleiche?

Wo bekomme ich eine vergleichende Diskussion dieser beiden Punkte? Kann mir jemand auch sagen, welche Arten von Listener und Handler verfügbar sind?

    
scooby 19.06.2012, 12:41
quelle

2 Antworten

2

Eine Reihe von ActionScript-Klassen enthält Ereignisse. Ein Ereignis wird von einem Objekt ausgelöst, wenn ein bestimmtes Ereignis eintritt. Wenn sich beispielsweise jemand in einer SWF über ein Schaltflächensymbol bewegt, wird das Ereignis Button.onRollOver für diese bestimmte Button-Instanz ausgelöst. Wenn die Maus an eine andere Stelle verschoben wird, wird das Ereignis Button.onRollOut für dieselbe Instanz ausgelöst. Diese Ereignisse finden unabhängig davon statt, ob jemand davon Notiz nimmt oder nicht. Wenn Sie als Reaktion auf ein Ereignis tatsächlich etwas tun möchten, müssen Sie es mit einem Ereignishandler oder einem Ereignis-Listener verwalten. Die Auswahl zwischen diesen beiden wird durch das Objekt bestimmt - einige Objekte erwarten Handler, einige Listener -, also treffen Sie im Zweifelsfall die ActionScript-Referenz. Handler sind relativ einfach, aber aus irgendeinem Grund scheinen die Zuhörer die Leute zuerst zu verblüffen.

Event Handler

Die beliebtesten Ereignisse gehören wahrscheinlich zu den Button- und MovieClip-Klassen, die viele davon teilen (ein Movieclip kann eine Schaltfläche sein, aber nicht umgekehrt). Um das Ereignis Button.onRelease zu verarbeiten, müssen Sie lediglich ein Schaltflächensymbol auf die Bühne ziehen und über den Eigenschafteninspektor einen Instanznamen eingeben. Verwenden Sie diesen Namen in einem Rahmenskript, um dem Ereignis eine Funktion zuzuweisen.

%Vor%

Die anderen Button-Ereignisse funktionieren ebenso wie die MovieClip-Ereignisse und alle Ereignisse, für die Ereignishandler erforderlich sind.

Eine beliebige Anzahl von Ereignissen kann bearbeitet werden. Ordnen Sie jedem Ereignis bei Bedarf eine Funktion zu. Eine Schaltfläche, die beispielsweise auf ein Rollover, Release und Rollout reagiert, könnte so aussehen ...

%Vor%

Ereignislistener

Das Verwalten von Ereignis-Listenern erfordert einige weitere Schritte. Ein Listener wird mit einer generischen Objektinstanz ausgeführt. Dieses Objekt fungiert als Verbindung zwischen mindestens zwei anderen Objekten: dem Objekt, das das Ereignis auslöst, und allen Objekten, die auf das Ereignis warten. Schauen wir uns ein MovieClipLoader-Beispiel an.

%Vor%

An dieser Stelle haben wir eine Variable namens mcl deklariert, die auf eine Instanz von MovieClipLoader verweist. Jetzt deklarieren wir eine weitere Variable, mclListener, die auf eine Instanz von Object verweist. (Klingt komisch, ich weiß, aber wir erstellen ein Objekt Objekt.)

%Vor%

Dieses generische Objekt wird jetzt unsere Verbindung sein. An dieser Stelle sieht der Code dem Event-Handler-Ansatz sehr ähnlich.

%Vor%

Ich hätte jedes Ereignis aus der MovieClipLoader-Klasse auswählen können, es spielt wirklich keine Rolle. Hier ist zu beachten, dass ein generisches Objekt das Ereignis im Auftrag der operativen Klasseninstanz behandelt. Mit Ereignishandlern behandelt die operative Klasseninstanz ihre eigenen Ereignisse.

Nun, da wir unseren Listener haben und nun im Auftrag unserer MovieClipLoader-Instanz einer Funktion eine Funktion zugewiesen wurde, müssen wir den Listener einfach auf mcl subskribieren.

%Vor%

Fertig. Mal sehen, dass alles in einem ist:

%Vor%

Um auf mehr als ein Ereignis zu warten, folgen Sie einfach dem Event-Handler-Ansatz.

%Vor%

Hinweis: Ссылка

Sie können auch diese Yahoo-Antwort

überprüfen     
GAMA 19.06.2012, 12:47
quelle
5

Der grundlegende Unterschied besteht darin, dass Ereignishandler das Ursprungsobjekt selbst als Reaktion auf das Ereignis ausführen lassen, während Ereignislistener andere Objekte als Reaktion auf Ereignisse ausführen im Objekt.

Zum Beispiel: Ihre Aktivität hat eine Schaltfläche. Wenn Sie möchten, dass Ihre -Aktivität verwendet wird, wenn jemand die Schaltfläche berührt, verwenden Sie einen Ereignis-Listener (indem Sie btn.setOnTouchListener (...) ausführen). ABER, wenn Sie eine spezielle Schaltfläche erstellen möchten (z. B. eine, die wie ein Hund aussieht und bei Berührung bellt), können Sie eine Unterklasse von Button erstellen und ihren Ereignishandler onTouchEvent (...) implementieren. In diesem letzteren Fall wird die Schaltfläche selbst ihr Berührungsereignis behandeln.

    
Blah0x7B9 28.09.2012 19:26
quelle