Dans une Android (ou Java plus généralement si ce n'est pas différent), quelle est la meilleure façon d'appeler une méthode chaque fois que la valeur d'une variable change?)
Ce que vous voulez vraiment faire, c'est configurer un modèle piloté par les événements pour déclencher un écouteur lorsqu'un événement se produit (dans votre cas, disons qu'une valeur de variable a changé). Ceci est très courant non seulement pour Java, mais aussi pour d'autres langages de programmation, en particulier dans le contexte de la programmation d'interface utilisateur (bien que ce ne soit pas nécessairement uniquement pour cela)
Cela se fait généralement en procédant comme suit:
public interface VariableChangeListener {
public void onVariableChanged(Object... variableThatHasChanged);
}
Vous pouvez mettre ici tout argument que vous pensez qu'il est important pour l'auditeur de le gérer. En faisant un résumé dans l'interface, vous avez la flexibilité d'implémenter l'action nécessaire dans le cas où la variable a changé sans la coupler étroitement avec la classe où l'événement se produit.
// while I only provide an example with one listener in this method, in many cases
// you could have a List of Listeners which get triggered in order as the event
// occurres
public void setVariableChangeListener(VariableChangeListener variableChangeListener) {
this.variableChangeListener = variableChangeListener;
}
Par défaut, personne n'écoute l'événement
if( variableValue != previousValue && this.variableChangeListener != null) {
// call the listener here, note that we don't want to a strong coupling
// between the listener and where the event is occurring. With this pattern
// the code has the flexibility of assigning the listener
this.variableChangeListener.onVariableChanged(variableValue);
}
Encore une fois, c'est une pratique très courante dans la programmation pour essentiellement réagir à un événement ou à un changement de variable. En Javascript, vous voyez que cela fait partie de onclick (), dans Android vous pouvez vérifier le modèle piloté par les événements pour divers écouteurs tels que OnClickListener défini sur un Button onclick event. Dans votre cas, vous déclencherez simplement l'écouteur en fonction d'un événement différent, à chaque fois que la variable a changé