Androidアプリ(またはJavaより一般的には同じであれば))では、変数の値が変更されるたびにメソッドを呼び出す最善の方法は何ですか?
本当にやりたいことは、イベントが発生したときにリスナーをトリガーするようにイベント駆動型モデルを設定することです(この場合、変数値が変更されたとします)。これは、Javaだけでなく、他のプログラミング言語、特にUIプログラミングのコンテキストでも非常に一般的です(ただし、必ずしもそれだけではありません)。
通常、これは次の手順を実行して行われます。
public interface VariableChangeListener {
public void onVariableChanged(Object... variableThatHasChanged);
}
リスナーがここで処理することが重要であると考える任意の引数を置くことができます。インターフェースに抽象化することにより、イベントが発生しているクラスと密結合することなく、変数が変更された場合に必要なアクションを実装する柔軟性があります。
// 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;
}
デフォルトでは、誰もイベントを聞いていません
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);
}
繰り返しますが、これは基本的にイベントまたは変数の変更に反応するプログラミングの非常に一般的な方法です。 JavaScriptでは、これはonclick()の一部であることがわかります。Androidでは、イベント駆動モデルをチェックして、 OnClickListener などのさまざまなリスナーを確認できます ボタン onclickイベント。この場合、変数が変更されるたびに発生する別のイベントに基づいてリスナーをトリガーします