在 Android 应用程序(或者更一般的 Java 应用程序,如果没有什么不同的话)中,每当变量的值发生变化时调用方法的最佳方式是什么?
您真正想要做的是设置事件驱动模型以在事件发生时触发侦听器(在您的情况下,假设变量值已更改)。这不仅对于 Java 很常见,对于其他编程语言也很常见,尤其是在 UI 编程的上下文中(尽管不一定仅限于此)
通常,这是通过执行以下步骤来完成的:
- 决定事件触发时侦听器应实现的接口。对于您的情况,您可以将其称为 VariableChangeListener 并将接口定义为:
public interface VariableChangeListener {
public void onVariableChanged(Object... variableThatHasChanged);
}
您可以在此提出您认为对听众来说重要的任何论点。通过抽象到接口中,您可以在变量发生更改的情况下灵活地实现必要的操作,而无需将其与事件发生的类紧密耦合。
- 在事件发生的类中(同样在您的例子中,变量可以更改的类),添加一个方法来注册事件的侦听器。如果您调用接口 VariableChangeListener 那么您将拥有一个方法,例如
// 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 中,您可以检查各种侦听器的事件驱动模型,例如单击监听器 http://developer.android.com/reference/android/view/View.OnClickListener.html设置在一个Button http://developer.android.com/reference/android/widget/Button.htmlonclick 事件。在您的情况下,您将根据不同的事件触发监听器,即每当变量发生变化时
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)