thread studio new example espaƱol android android-handler postdelayed

android - studio - cancelando un proceso handler.postdelayed



handler thread android example (4)

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 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 posterior a la demora antes de que transcurra el tiempo.


En caso de que tenga varias secuencias internas / anónimas pasadas al mismo controlador, y desee cancelarlas todas al mismo tiempo de uso

handler.removeCallbacksAndMessages(null);

Según la documentación,

Elimine cualquier publicación pendiente de devoluciones de llamada y mensajes enviados cuyo objeto sea token. Si el token es nulo, se eliminarán todas las devoluciones de llamada y los mensajes.


Funcionó para mí cuando llamé a CancelCallBacks (this) dentro del post retrasado ejecutable entregándolo a través de un booleano

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); } } };


Hago esto para publicar un runnable retrasado:

myHandler.postDelayed(myRunnable, SPLASH_DISPLAY_LENGTH);

Y esto para eliminarlo: myHandler.removeCallbacks(myRunnable);


Otra forma es manejar el propio Runnable:

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