在Android应用程序(或者更常见的Java,如果它没有什么不同)中,只要变量的值发生变化,调用方法的最佳方法是什么?
答案 0 :(得分:57)
您真正想要做的是设置事件驱动模型,以便在事件发生时触发侦听器(在您的情况下,假设变量值已更改)。这不仅适用于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事件上设置的Button。在您的情况下,您将根据变量发生变化时的不同事件触发侦听器
答案 1 :(得分:-6)
你可以这样做。因为你没有确切地定义你想要的东西。它可能会起作用。假设你的变量名是v。取一个变量previous_v。 make previous_v = v; 。您可以根据自己的要求输入代码:
if(v!=previous_v){
//your stuffs
}