我有两个方法:go()和stop(),以及循环遍历这些方法3次的for循环。循环开始时go()自动激活,而stop()仅在按下按钮3次后激活:
private static int buttonPress;
for (int i = 0; i < 3, i++) {
go();
do {} while(pressCount < 4);
stop();
}
每当按下按钮时,pressCount增加1:
public void button(View v) {
pressCount++;
}
问题是,使用此设置,当do while循环启动时,应用程序会冻结并崩溃。
有没有办法解决这个问题,同时在stop()之前激活go(),在pressCount大于3之后激活stop()并循环3次?
由于
答案 0 :(得分:3)
如果发生这种情况,则无法阻止主线程超过5秒,然后弹出一个anr(应用程序未响应)对话框。
答案 1 :(得分:0)
试试这个
private boolean isStop = true;
private int buttonPressedCount = 0;
private void goOrStop() {
if(isStop) {
go();
isStop = false;
} else {
stopIfCan(); // :)
}
}
private void stopIfCan() {
if(buttonPressedCount >= 3 ) {
buttonPressedCount = 0;
isStop = false;
stop();
}
}
public void button(View v) {
buttonPressedCount++;
}
答案 2 :(得分:0)
你无法暂停主线程,应用程序冻结。
private int loopCount = 0;
private int pressCount = 0;
public void button(View v) { /* Runs when button is clicked */
if (loopCount < 4){
pressCount++;
if (pressCount == 3){
pressCount = 0;
loopCount++;
stop();
}
}
}
当按下按钮三次时,此代码运行stop()
,但只运行三次。 (9次按后没有任何事情发生)