【发布时间】:2020-04-24 21:56:17
【问题描述】:
从我开始编码的第一天起,我就有一个常见问题:避免多次处理一个事件(按钮单击,..)。大多数时候,我想出一个简单的解决方案(添加一个布尔标志来检查),如下所示:
private boolean isProcessingClick = false;
@Override
public void onClick(View v) {
onLoginButtonClick();
}
private void onLoginButtonClick() {
if (isProcessingClick)
return;
isProcessingClick = true;
// Do something..
// Update some UIs..
isProcessingClick = false;
}
这很好用。但是随着课程越来越大,功能和事件越来越多,一切都开始出错了。我们需要创建太多布尔标志,这对业务没有任何意义,并且不应该是此类的一个字段。
有人对此有更好的解决方案吗?
【问题讨论】:
-
布尔标志是状态,因此您可能希望使用状态机架构或基于视图模型的方法
-
谢谢你回复我@Steyrix,你有什么例子吗?
-
如果您可以使用状态机(在这种情况下,单击按钮会导致您更改整个视图的状态,具体取决于当前状态),您可能想要使用 redux 。不幸的是,我丢失了过去发现非常有用的文章。也许这个对你来说会很有趣jayrambhia.com/blog/android-redux-intro
标签: java android architecture software-design