【发布时间】:2018-11-01 14:33:38
【问题描述】:
我有 4 个按钮,每个按钮都有不同的操作(假设每个操作需要 2 分钟)
当我单击两个按钮时(它们之间有几分钟的时间),它们仍然进入“if”部分,尽管我放了标志。
这是我的部分代码:
southToNorth.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
north.incCounter();
north.setWaitingState(true);
pushToQueue(1);
if (isWorking==0) {
isWorking++;
start();
}
}
});
westToEast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
east.incCounter();
east.setWaitingState(true);
pushToQueue(2);
if (isWorking==0) {
isWorking++;
start();
}
}
});
我不认为这是一个同步问题,我什至把这段代码放在了 start 函数的顶部:
private void start() {
if(isWorking>1)
return;
但是,它们都是 start 函数,这是我试图避免的。
(我有一个全局标志“int isWorking”初始化为零)
为什么他们都进入了 if 部分?我该如何解决?
非常感谢!
【问题讨论】:
-
你设置过
isWorking吗?pushToQueue()是做什么的? -
isWorking 在运行时初始化为 0。只有当 start() 函数完成后,isWorking 才会再次设置为 0。 pushToQueue 负责在屏幕上做一些改变,没有连接到程序流程
-
当
start()完成时,您将isWorking设置回零?如果您的操作是异步的,那么isWorkng将立即被设置回零。在将isWorking设置为零之前,您需要监听操作何时完成。
标签: android synchronization android-button