Je souhaite comprendre le concept de callback. J'ai fait des recherches sur internet à propos des callbacks et il y a beaucoup d'exemples utilisant des interfaces, et une classe appelle une méthode d'une autre classe en utilisant cette interface. Mais je n'arrive toujours pas à comprendre le concept principal des callbacks, quel est le but de l'utilisation des callbacks ?
Réponses
Trop de publicités?Voici une belle tutoriel qui décrit bien les rappels et le cas d'utilisation.
Le concept des callbacks est d'informer une classe synchrone/asynchrone si un travail dans une autre classe est effectué. Certains l'appellent le principe d'Hollywood : "Ne nous appelez pas, nous vous appelons".
Voici un exemple :
class A implements ICallback {
MyObject o;
B b = new B(this, someParameter);
@Override
public void callback(MyObject o){
this.o = o;
}
}
class B {
ICallback ic;
B(ICallback ic, someParameter){
this.ic = ic;
}
new Thread(new Runnable(){
public void run(){
// some calculation
ic.callback(myObject)
}
}).start();
}
interface ICallback{
public void callback(MyObject o);
}
La classe A appelle la classe B pour effectuer un travail dans le cadre d'un fil conducteur. Si le Thread a terminé le travail, il en informera la Classe A par le biais du callback et fournira les résultats. Il n'est donc pas nécessaire d'effectuer un sondage ou autre. Vous obtiendrez les résultats dès qu'ils seront disponibles.
Dans Android, les rappels sont utilisés, par exemple, entre les activités et les fragments. Les fragments devant être modulaires, vous pouvez définir un rappel dans le fragment pour appeler des méthodes dans l'activité.
Vous créez d'abord une interface, puis vous définissez une méthode qui servira de rappel. Dans cet exemple, nous aurions deux classes, l'une classeA et un autre classeB
Interface :
public interface OnCustomEventListener{
public void onEvent(); //method, which can have parameters
}
l'écouteur lui-même dans la classe B (nous ne définissons l'écouteur que dans la classe B)
private OnCustomEventListener mListener; //listener field
//setting the listener
public void setCustomEventListener(OnCustomEventListener eventListener) {
this.mListener=eventListener;
}
dans la classe A, comment nous commençons à écouter ce que la classe B a à nous dire ?
classB.setCustomEventListener(new OnCustomEventListener(){
public void onEvent(){
//do whatever you want to do when the event is performed.
}
});
Comment déclencher un événement à partir de la classe B (par exemple lorsqu'on appuie sur un bouton) ?
if(this.mListener!=null){
this.mListener.onEvent();
}
P.S. Votre écouteur personnalisé peut avoir autant de paramètres que vous le souhaitez
CallBack Interface
sont utilisés pour Fragment
a Fragment
la communication dans Android.
Référer aquí pour votre compréhension.
Il a été discuté avant aquí .
En programmation informatique, un rappel est un morceau de code exécutable qui est transmis comme argument à un autre code, qui est censé rappeler (exécuter) l'argument à un moment opportun. L'invocation peut être immédiate, comme dans le cas d'un rappel synchrone, ou se produire plus tard, comme dans le cas d'un rappel asynchrone.
- Réponses précédentes
- Plus de réponses