1

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

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;
                }
            });
        }

我也不能使用标签中断,比如这个链接:Return and Break statements 之间的区别

4

4 回答 4

2

break只能让你停止一个循环(for/while)或一个开关。

如果你想阻止一个方法继续运行,你应该调用return.

于 2012-05-29T06:39:16.170 回答
1

没门。run() 异步执行,并且可能在循环执行完所有 10 次迭代后开始。

于 2012-05-29T06:45:25.663 回答
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;
                        }
                      });

                       }
                      }
于 2012-05-29T06:45:47.243 回答
1

您正在添加 10 个 Runnable 以由与 Handler 关联的线程运行,然后尝试在 Runnable 内部停止添加。

如果您想在某个时候停止剩余的可运行程序运行,那么如果您的代码中的可运行程序是相同的,那么您可以添加相同的可运行程序 10 次,然后使用removeCallback删除剩余的可运行程序。

如果 Runnable 不同,您可以在每个 run() 方法的开头和return早期检查您的标志,以便运行可运行但不做太多事情,或者您可以让每个 Runnable 添加下一个运行,如果未设置标志。

于 2012-05-29T06:50:29.277 回答