在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中,您可以检查事件驱动器模型,以了解各种侦听器,例如在Button
onclick事件上设置的OnClickListener。在您的情况下,您将仅基于不同事件触发侦听器,即在变量更改时
问题内容: 我在.each循环内调用ajax jquery函数,并且仅当循环内的所有ajax调用完成并成功时,我才想执行一个操作。 怎么做?否,因为这会阻止浏览器。 问题答案: 这是一种方法: 您可以根据复选框的数量来计算初始值,也可以从0开始,在每次ajax请求之前将其递增,但这是一般的想法。 希望这可以帮助。干杯
我想每次改变整数变量时发送更新
我的课程注册项目应该有很多方法,比如(添加课程),(添加导师),等等(添加学生())就是其中之一,我想知道每次创建对象时如何更改对象的变量(std)我不知道每个对象如何都有相同的变量 那么,我想把变量改为std1、std2之类的任何建议 我想知道这是不是我做错了什么? 如果每个对象都用相同的变量声明,那么它会将每个创建的对象的数据克隆到新创建的对象? 谢谢你。
问题内容: 如何轻松检测变量何时更改值?我希望每当指定变量更改值时,程序的执行就在调试器上中断。现在,我正在使用Eclipse的调试器。 问题答案: 对于类或实例变量 右键单击大纲视图中的变量 选择“切换监视点” 然后,在breapkoints视图中,可以右键单击结果条目 选择“断点属性” 取消选择“现场访问”。
问题内容: 和之间的MySQL FK有什么区别?从文档来看,它们看起来完全一样。是这样吗 如果是这样,为什么两者都有? 问题答案: 从MySQL文档开始:https : //dev.mysql.com/doc/refman/8.0/en/create-table-foreign- keys.html 某些数据库系统具有延迟检查,并且是延迟检查。在MySQL中,外键约束会立即检查,因此与相同。
请帮助我订阅更改的变量。我做了简单的微调。服务中的微调状态(真|假)存储: 在组件模板中,我通过条件显示微调器: 在组件中,我尝试订阅服务isVisibleSpinner变量中的更改: 但控制台输出遵循错误消息: 类型“boolean”不可分配给类型“Observable”。