Estoy usando handler.postDelayed()
para crear un período de espera antes de que tenga lugar la siguiente etapa de mi aplicación. Durante el período de espera, estoy mostrando un cuadro de diálogo con la barra de progreso y el botón de cancelar .
Mi problema es que no puedo encontrar una manera de cancelar la tarea postDelayed antes de que transcurra el tiempo.
Respuestas:
Hago esto para publicar un runnable retrasado:
Y esto para eliminarlo:
myHandler.removeCallbacks(myRunnable);
fuente
En caso de que tenga múltiples ejecutables internos / anónimos pasados al mismo controlador, y desee cancelar todos en el mismo evento, use
handler.removeCallbacksAndMessages(null);
fuente
removeCallbacks(callback)
para eliminar la devolución de llamada específicaOtra forma es manejar el Runnable mismo:
fuente
r
en este caso), lo que significa que puedo usarlomyHandler.removeCallbacks(r);
. Si el Runnable es anónimo, la bandera será un miembro de la clase adjunta, lo que significa que necesito una referencia a ese objeto para cambiar la bandera, lo que significa que nuevamente tendré que tenerr
, lo que significa que puedo hacerlomyHandler.removeCallbacks(r);
. Y si lo estoy haciendomyHandler.removeCallbacks(r);
, tal bandera no es necesaria en absoluto. ¿Me estoy perdiendo de algo?Aquí hay una clase que proporciona un método de cancelación para una acción retrasada
fuente
Funcionó para mí cuando llamé a CancelCallBacks (esto) dentro de la publicación demorada ejecutable al entregarla a través de un booleano
fuente
Espero que esta ayuda esencial sea https://gist.github.com/imammubin/a587192982ff8db221da14d094df6fb4
MainActivity como Screen Launcher con controlador y función ejecutable, Runnable ejecutar a la página de inicio de sesión o página de alimentación con el usuario de inicio de sesión de preferencia base con firebase.
fuente