Я использую, handler.postDelayed()
чтобы создать период ожидания до следующего этапа моего приложения. В течение периода ожидания я отображаю диалог с индикатором выполнения и кнопкой отмены .
Моя проблема в том, что я не могу найти способ отменить задание postDelayed до истечения времени.
Ответы:
Я делаю это для публикации отложенного запуска:
И это, чтобы удалить это:
myHandler.removeCallbacks(myRunnable);
источник
Если у вас есть несколько внутренних / анонимных исполняемых модулей, переданных одному и тому же обработчику, и вы хотите отменить все при одном и том же событии
handler.removeCallbacksAndMessages(null);
источник
removeCallbacks(callback)
чтобы удалить конкретный обратный вызовДругой способ - обработать сам Runnable:
источник
r
в данном случае), что означает, что я могу использоватьmyHandler.removeCallbacks(r);
. Если Runnable является анонимным, то флаг будет членом входящего в него класса, что означает, что мне нужна ссылка на этот объект для изменения флага, что означает, что мне снова нужно будет вr
любом случае, что означает, что я могу это сделатьmyHandler.removeCallbacks(r);
. И если я делаю,myHandler.removeCallbacks(r);
то такой флаг вообще не нужен. Я что-то упускаю?Вот класс, предоставляющий метод отмены для отложенного действия
источник
Это сработало для меня, когда я вызвал CancelCallBacks (this) внутри отложенного запуска, передавая его через логическое значение
источник
Надеюсь, что эта суть поможет https://gist.github.com/imammubin/a587192982ff8db221da14d094df6fb4
MainActivity как Screen Launcher с обработчиком и запускаемой функцией, Runnable запускается для входа на страницу или на страницу канала с базовыми предпочтениями для входа в систему пользователя с помощью firebase.
источник