estou usando handler.postDelayed()
para criar um período de espera antes do próximo estágio do meu aplicativo. Durante o período de espera, estou exibindo uma caixa de diálogo com barra de progresso e botão Cancelar .
Meu problema é que não consigo encontrar uma maneira de cancelar a tarefa postDelayed antes que o tempo se esgote.
Respostas:
Eu faço isso para postar um executável atrasado:
E isso para removê-lo:
myHandler.removeCallbacks(myRunnable);
fonte
Caso você tenha várias executáveis internas / anônimas passadas para o mesmo manipulador e deseje cancelar todas no mesmo evento de uso
handler.removeCallbacksAndMessages(null);
fonte
removeCallbacks(callback)
para remover retorno de chamada específicoOutra maneira é lidar com o próprio Runnable:
fonte
r
neste caso), o que significa que posso usarmyHandler.removeCallbacks(r);
. Se o Runnable for anônimo, o sinalizador será um membro da classe anexa, o que significa que eu preciso de uma referência a esse objeto para alterar o sinalizador, o que significa que eu novamente precisarei ter der
qualquer maneira, o que significa que posso fazermyHandler.removeCallbacks(r);
. E se estou fazendomyHandler.removeCallbacks(r);
, essa bandeira não é necessária. Estou esquecendo de algo?Aqui está uma classe que fornece um método de cancelamento para uma ação atrasada
fonte
Funcionou para mim quando eu chamei CancelCallBacks (this) dentro do post atrasado, executável, entregando-o através de um valor booleano
fonte
Espero que este gist ajude https://gist.github.com/imammubin/a587192982ff8db221da14d094df6fb4
MainActivity como Screen Launcher com função manipulador e executável, o Runnable executa a página de login ou alimenta a página com o usuário de login de preferência base com firebase.
fonte