2013-11-19 3 views
2

что мне нужно, когда 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 
       } 
      }; 

как я могу остановить его должным образом?

ответ

1
 timerRun=new Runnable() 
     { 
      @Override 
      public void run() { 

       timerTVmainmenue.setText(competition.getTimerTime()); 
       if (!competition.isTimerStarted){ 
       thandler.removeCallbacks(this); 
       Log.d("MyLog","timerrun is blame for infinite butproc"); 
       buttonsProcedure(); 
       return; 
      } 
      thandler.postDelayed(this, 243); //looping this for every 243 ms 
      } 
     }; 

вы должны добавить return внутри, если условие или использовать if-else построить

+0

wow thanks! По какой-то причине я могу принять ответ за 7 минут. Можете ли вы объяснить мне эту проблему? почему возвращение спасает эту ситуацию? – user2976267

+0

ну нечего объяснить .. следующая инструкция после закрывающей скобки предложения if поставлена. Поэтому вы удаляете его runnable внутри предложения if и отправляете его сразу после блока if. С возвращением вы нарушаете нормальный поток кода – Blackbelt

+0

спасибо за объяснение! Не думал об этом таким образом – user2976267

0

Получить его из работоспособной. Что вы делаете, это удаление обратных вызовов, а затем (следующая строка) - отправка его снова. Если вы измените места, где вы достигнете желаемого эффекта, но за счет постоянной настройки и удаления обратных вызовов. Поэтому просто удалите обратные вызовы из другого места в вашем коде.

Смежные вопросы