Intereting Posts
Получение целых или индексных значений из предпочтений списка Как загрузить заголовок веб-страницы в Android WebView? Как отключить кеш браузера Android навсегда? Android AudioRecord для сервера по вопросам воспроизведения UDP Ошибка упаковки Kivy с библиотекой numpy для Android с использованием buildozer Android NDK, поддерживающий живые объекты C ++ КоординаторLayout + TabView + AnimateView (сверху) Какие языки программирования можно использовать на Android Dalvik? Android, ориентация только на пейзаж? Модульное тестирование создания базы данных SQLite с использованием Spock и Robospock Воспроизведение видео в формате HTML5 на полноэкранном режиме в веб-обозревателе Android Вход в Facebook NullPointerException Как программировать круглые углы и задавать произвольные фоновые цвета Android-эмулятор спама logcat с «Service com.android.exchange.ExchangeService просочился ServiceConnection …, который первоначально был связан здесь Intel HAXM эквивалент для AMD в ОС Windows

Отмена процесса handler.postdelayed

Я использую handler.postDelayed() чтобы создать период ожидания до следующего этапа моего приложения. Во время периода ожидания я показываю диалог с индикатором выполнения и кнопкой отмены .

Моя проблема заключается в том, что я не могу найти способ отменить задачу postDelayed до истечения времени.

Solutions Collecting From Web of "Отмена процесса handler.postdelayed"

Я делаю это, чтобы опубликовать задержанный runnable:

 myHandler.postDelayed(myRunnable, SPLASH_DISPLAY_LENGTH); 

И это, чтобы удалить его: myHandler.removeCallbacks(myRunnable);

Другим способом является обработка самого Runnable:

 Runnable r = new Runnable { public void run() { if (booleanCancelMember != false) { //do what you need } } } 

Это сработало для меня, когда я вызвал CancelCallBacks (это) внутри записи с задержкой, передав ее через логическое

 Runnable runnable = new Runnable(){ @Override public void run() { Log.e("HANDLER", "run: Outside Runnable"); if (IsRecording) { Log.e("HANDLER", "run: Runnable"); handler.postDelayed(this, 2000); }else{ handler.removeCallbacks(this); } } }; 

Если у вас есть несколько внутренних / анонимных runnables, переданных одному обработчику, и вы хотите отменить все при одном и том же использовании событий

handler.removeCallbacksAndMessages(null);

Согласно документации,

Удалите все ожидающие сообщения обратных вызовов и отправленные сообщения, obj которых является токеном. Если токен равен нулю, все обратные вызовы и сообщения будут удалены.