从处理程序中断循环

时间:2012-05-29 06:35:32

标签: java android loops handler

我需要从该循环中的处理程序中断循环,但是存在一个问题:

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

4 个答案:

答案 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如果未设置标志,则添加下一个运行。