我需要从该循环中的处理程序中断循环,但是存在一个问题:
break cannot be used outside of a loop or a switch
这是我的代码:
Handler mHandler = new Handler();
for (int i = 0; i < 10; i++) {
mHandler.post(new Runnable() {
@Override
public void run() {
if (Break)
break;
}
});
}
我也不能使用标签中断,例如此链接:Difference between Return and Break statements
答案 0 :(得分:2)
break
只能让你停止循环(for / while)或切换。
如果您想阻止方法继续运行,请拨打return
。
答案 1 :(得分:1)
没办法。 run()以异步方式执行,并且可以在循环执行所有10次迭代后启动。
答案 2 :(得分:1)
我认为您可以使用布尔值来完成任务。
boolean isBreak = false;
Handler mHandler = new Handler();
for (int i = 0; i < 10; i++) {
if(!isbreak)
{
mHandler.post(new Runnable() {
@Override
public void run() {
if (Break)
isBreak = true;
}
});
}
}
答案 3 :(得分:1)
您正在添加10个Runnables以供与Handler关联的线程运行,然后尝试在Runnable中的事实之后停止添加。
如果你想在某个时刻停止剩余的runnable运行,那么如果在你的代码中Runnable是相同的那么你可以添加相同的runnable 10次并使用removeCallback删除剩余的。
如果Runnables不同,你可以在每个run()方法的开头和早期的return
检查你的标志,这样runnables就会运行但不会做太多,或者你可以导致每个Runnable如果未设置标志,则添加下一个运行。