Мне нужно разбить мой цикл из обработчика в этом цикле, но есть проблема:
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
Вы добавляете 10 Runnables для запуска потоком, с которым связан обработчик, а затем пытаетесь остановить добавление после факта внутри Runnable.
Если вы хотите остановить оставшиеся runnables, запущенные в какой-то момент, тогда, если в вашем коде Runnable будет таким же, вы можете добавить один и тот же runnable 10 раз и удалить остальные, используя removeCallback.
Если Runnables отличаются друг от друга, вы можете проверить свой флаг в начале каждого метода run() и return
раньше, поэтому runnables запускаются, но не делают много, или вы можете заставить каждый Runnable добавить следующий для запуска если флаг не установлен.
break
может только позволить вам остановить цикл (для/время) или переключатель.
Если вы хотите остановить метод от дальнейшего продолжения, вы должны вызвать return
.
Я думаю, вы можете использовать логическое значение для достижения своей задачи.
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;
}
});
}
}
Ни за что. run() выполняется асинхронно и может начинаться после того, как цикл выполнит все 10 итераций.
Runnable
не имеет никакого смысла с перерывом.