как остановить / отменить андроид CountDownTimer

Я расширяю class CountDownTimer, чтобы получить некоторые пользовательские функции. В onTick () в случае выполнения некоторых условий я вызываю cancel (), ожидая, что это будет конец, однако обратный вызов onTick () получает вызов до тех пор, пока счетчик вниз. Итак, как предотвратить это?

Метод CountDownTimer.cancel (), похоже, не работает. Вот еще один stream без решения. Таймер не останавливается на андроиде .

Вместо этого я бы рекомендовал вам использовать таймер. Он намного более гибкий и может быть отменен в любое время. Это может быть что-то вроде этого:

public class MainActivity extends Activity { TextView mTextField; long elapsed; final static long INTERVAL=1000; final static long TIMEOUT=5000; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextField=(TextView)findViewById(R.id.textview1); TimerTask task=new TimerTask(){ @Override public void run() { elapsed+=INTERVAL; if(elapsed>=TIMEOUT){ this.cancel(); displayText("finished"); return; } //if(some other conditions) // this.cancel(); displayText("seconds elapsed: " + elapsed / 1000); } }; Timer timer = new Timer(); timer.scheduleAtFixedRate(task, INTERVAL, INTERVAL); } private void displayText(final String text){ this.runOnUiThread(new Runnable(){ @Override public void run() { mTextField.setText(text); }}); } } 

CountDownTimer также отлично работает для меня, но я думаю, что он работает только в том случае, если вы назовете его OUTSIDE для выполнения CountDownTimer (то есть не назовите его в onTick).

Вызов его внутри тоже не сработал.

Я пробовал этот fragment кода, так как большинство ответов говорят о том, что вы не можете отменить таймер внутри его реализации, поэтому я попытался использовать обработчик внутри onFinish. Старый пост, но если кому-то это поможет.

 new Handler().post(new Runnable() { @Override public void run() { timerTextView.setText("00:" + String.format("%02d", counter)); cancel(); } }); 
  • Обновление библиотеки поддержки 23.2.0 build bug
  • Показать ImageView частично за прозрачным ActionBar
  • Как отобразить PDF через веб-браузер Android без «загрузки» в первую очередь
  • Создание Android-сервиса с помощью Phonegap? (У вас есть приложение для телефонного звонка, даже если оно закрыто)
  • onActivityResult не вызывается в fragmentе
  • Очистить задний стек с помощью fragmentов
  • Android - TimePicker минут до 15
  • NDK - Как использовать сгенерированную библиотеку .so в другом проекте
  • Реализация пользовательского выбора темы
  • Добавьте «Просмотреть больше» в конце текстового просмотра после трех строк
  • Firebase перезаписывает подписи с учетной записью Google
  • Interesting Posts

    Имя динамического тега в jsx и React

    Редактирование видео в командной строке в Linux (вырезание, подключение и предварительный просмотр)

    Самый простой способ преобразования коллекции в массив?

    Есть ли достойная функция ожидания в C ++?

    Как преобразовать ‘struct’ в ‘& ‘?

    Как надолго «переименовать» процесс в Mac OS X (или iOS и т. Д.)?

    Как переустановить Windows без CD / DVD?

    Изменить имя apk с помощью Gradle

    Что эквивалентно функциям VB Asc () и Chr () в C #?

    Комбинация клавиш Visual Studio для автоматического добавления необходимого оператора ‘using’

    Что такое безопасный способ избавиться от личной информации на старом ноутбуке и что делать с этим ноутбуком?

    Секундомер против использования System.DateTime.Now для событий синхронизации

    Горячая клавиша Windows XP для фокусировки определенного окна

    Как я могу получить ключи продукта для программного обеспечения на моем ПК?

    Изменение цвета текста в GIMP

    Давайте будем гением компьютера.