Lors de la dernière IO de Google, il y avait une présentation sur la mise en œuvre d'applications client reposantes. Malheureusement, ce n'était qu'une discussion de haut niveau sans code source de l'implémentation.
Dans ce diagramme, sur le chemin de retour, il existe différents rappels vers d'autres méthodes.
Comment déclarer quelles sont ces méthodes?
Je comprends l'idée d'un rappel - un morceau de code qui est appelé après qu'un certain événement s'est produit, mais je ne sais pas comment l'implémenter. Jusqu'à présent, la seule façon dont j'ai implémenté les rappels a été de remplacer diverses méthodes (onActivityResult par exemple).
J'ai l'impression d'avoir une compréhension de base du modèle de conception, mais je n'arrête pas de me demander comment gérer le chemin de retour.
Réponses:
Dans de nombreux cas, vous disposez d'une interface et transmettez un objet qui l'implémente. Les boîtes de dialogue, par exemple, ont OnClickListener.
Juste à titre d'exemple aléatoire:
J'ai probablement foiré la syntaxe de l'option 2. Il est tôt.
la source
Quand quelque chose se passe à mon avis, je déclenche un événement que mon activité écoute:
// DÉCLARÉ EN VUE (PERSONNALISÉE)
// DÉCLARÉ EN ACTIVITÉ
Si vous voulez en savoir plus sur la communication (callbacks) entre les fragments, voir ici: http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity
la source
Pas besoin de définir une nouvelle interface lorsque vous pouvez utiliser un existant:
android.os.Handler.Callback
. Passez un objet de type Callback et invoquez des callbackshandleMessage(Message msg)
.la source
Exemple d'implémentation de la méthode de rappel à l'aide de l'interface.
Définissez l'interface, NewInterface.java .
package javaapplication1;
Créez une nouvelle classe, NewClass.java . Il appellera la méthode de rappel dans la classe principale.
La classe principale, JavaApplication1.java, pour implémenter l'interface NewInterface - méthode callback (). Il créera et appellera l'objet NewClass. Ensuite, l'objet NewClass rappellera à son tour sa méthode callback ().
la source
pour clarifier un peu la réponse de dragon (car il m'a fallu un certain temps pour savoir quoi faire
Handler.Callback
):Handler
peut être utilisé pour exécuter des rappels dans le thread actuel ou un autre thread, en le passantMessage
s. lesMessage
données de retenue à utiliser à partir du rappel. aHandler.Callback
peut être passé au constructeur deHandler
afin d'éviter d'étendre directement Handler. ainsi, pour exécuter du code via un rappel depuis le thread actuel:EDIT: je viens de me rendre compte qu'il existe un meilleur moyen d'obtenir le même résultat (moins le contrôle du moment exact où exécuter le rappel):
la source
Callback
mieux la version parce que vous n'avez pas forcément accès aux données nécessairesRunnable.run()
au moment où vous la construisezVous pouvez également utiliser
LocalBroadcast
à cette fin. Voici une petite quideCréez un récepteur de diffusion:
Voici comment vous pouvez le déclencher
désenregistrer le destinataire dans onPause:
la source