Während des letzten Google IO gab es eine Präsentation über die Implementierung erholsamer Clientanwendungen. Leider war es nur eine Diskussion auf hoher Ebene ohne Quellcode der Implementierung.
In diesem Diagramm gibt es auf dem Rückweg verschiedene Rückrufe zu anderen Methoden.
Wie erkläre ich, was diese Methoden sind?
Ich verstehe die Idee eines Rückrufs - ein Stück Code, der aufgerufen wird, nachdem ein bestimmtes Ereignis eingetreten ist, aber ich weiß nicht, wie ich es implementieren soll. Die einzige Möglichkeit, Rückrufe zu implementieren, bestand darin, verschiedene Methoden zu überschreiben (z. B. onActivityResult).
Ich habe das Gefühl, ein grundlegendes Verständnis für das Entwurfsmuster zu haben, aber ich werde immer wieder darüber informiert, wie ich mit dem Rückweg umgehen soll.
Antworten:
In vielen Fällen haben Sie eine Schnittstelle und geben ein Objekt weiter, das sie implementiert. Dialoge haben zum Beispiel den OnClickListener.
Nur als zufälliges Beispiel:
Ich habe wahrscheinlich die Syntax in Option 2 durcheinander gebracht. Es ist früh.
quelle
Wenn aus meiner Sicht etwas passiert, schalte ich ein Ereignis aus, auf das meine Aktivität wartet:
// IN (BENUTZERDEFINIERTER) ANSICHT ERKLÄRT
// IN AKTIVITÄT ERKLÄRT
Wenn Sie mehr über die Kommunikation (Rückrufe) zwischen Fragmenten erfahren möchten, lesen Sie hier: http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity
quelle
Sie müssen keine neue Schnittstelle definieren, wenn Sie eine vorhandene verwenden können :
android.os.Handler.Callback
. Übergeben Sie ein Objekt vom Typ Rückruf und rufen Sie Rückrufe aufhandleMessage(Message msg)
.quelle
Beispiel für die Implementierung einer Rückrufmethode mithilfe der Schnittstelle.
Definieren Sie die Schnittstelle NewInterface.java .
Paket javaapplication1;
Erstellen Sie eine neue Klasse, NewClass.java . Es ruft die Rückrufmethode in der Hauptklasse auf.
Die Hauptklasse JavaApplication1.java zum Implementieren der Methode NewInterface - callback () der Schnittstelle. Es wird ein NewClass-Objekt erstellt und aufgerufen. Dann ruft das NewClass-Objekt nacheinander seine callback () -Methode zurück.
quelle
um ein wenig über die Antwort des Drachen zu klären (da ich eine Weile gebraucht habe, um herauszufinden, was ich damit anfangen soll
Handler.Callback
):Handler
kann verwendet werden, um Rückrufe im aktuellen oder einem anderen Thread auszuführen, indem erMessage
s übergeben wird. DasMessage
enthält Daten, die aus dem Rückruf verwendet werden sollen. aHandler.Callback
kann an den Konstruktor von übergeben werden,Handler
um zu vermeiden, dass Handler direkt erweitert wird. So führen Sie Code per Rückruf vom aktuellen Thread aus:BEARBEITEN: Ich habe gerade festgestellt, dass es einen besseren Weg gibt, um das gleiche Ergebnis zu erzielen (abzüglich der Kontrolle, wann genau der Rückruf ausgeführt werden soll):
quelle
Callback
Version besser, weil Sie möglicherweise nicht unbedingt Zugriff auf die Daten haben, dieRunnable.run()
zum Zeitpunkt der Erstellung benötigt werdenSie können auch
LocalBroadcast
für diesen Zweck verwenden. Hier ist eine kurze FrageErstellen Sie einen Rundfunkempfänger:
So können Sie es auslösen
Empfänger in onPause abmelden:
quelle