что мне нужно, когда contest.isTimerStarted обходит false, этот runnable должен запускать кнопкиProcedure() один раз и останавливаться сам Но этого не происходит - buttonsProcedure() вызывается навсегда, а runnable не работает стоп.postDelayed Handler не останавливается
timerRun=new Runnable()
{
@Override
public void run() {
timerTVmainmenue.setText(competition.getTimerTime());
if (!competition.isTimerStarted) {thandler.removeCallbacks(timerRun);Log.d("MyLog","timerrun is blame for infinite butproc");buttonsProcedure();}
thandler.postDelayed(timerRun, 243); //looping this for every 243 ms
}
};
как я могу остановить его должным образом?
wow thanks! По какой-то причине я могу принять ответ за 7 минут. Можете ли вы объяснить мне эту проблему? почему возвращение спасает эту ситуацию? – user2976267
ну нечего объяснить .. следующая инструкция после закрывающей скобки предложения if поставлена. Поэтому вы удаляете его runnable внутри предложения if и отправляете его сразу после блока if. С возвращением вы нарушаете нормальный поток кода – Blackbelt
спасибо за объяснение! Не думал об этом таким образом – user2976267