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ステートメントとBreakステートメントの違い

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

Handler が関連付けられているスレッドによって実行される 10 個の Runnables を追加し、Runnable 内で事後に追加を停止しようとしています。

ある時点で実行中の残りのランナブルを停止したい場合、コードのようにランナブルが同じであれば、同じランナブルを 10 回追加し、removeCallbackを使用して残りを削除できます。

Runnables が異なる場合は、各 run() メソッドの最初とreturn早い段階でフラグをチェックして、runnables を実行しますが、あまり実行しないようにするか、各 Runnables に次の実行を追加させることができます。フラグは設定されていません。

于 2012-05-29T06:50:29.277 に答える