¿Qué sucede si tengo el hilo handler.postDelayed
ya en ejecución y necesito cancelarlo?Cómo cancelar handler.postDelayed?
Respuesta
Lo hago para cancelar postDelays, por el Android: removeCallbacks elimina cualquier publicación pendiente de Runnable r que están en la cola de mensajes.
handler.removeCallbacks(runnableRunner);
o utilizar para eliminar todos los mensajes y las devoluciones de llamada
handler.removeCallbacksAndMessages(null);
Más información con snipet: http://stackoverflow.com/questions/5885587/how-to-cancel-handler-in-code – Basher51
Si no desea mantener una referencia del ejecutable, simplemente podría llamar:
handler.removeCallbacksAndMessages(null);
The official documentation dice :
... Si el token es nulo, al l devoluciones de llamada y mensajes serán eliminados.
Tuve una instancia en la que necesitaba cancelar una publicación Detenida mientras estaba en proceso de ejecución, por lo que el código anterior no funcionaba para mi ejemplo. Lo que terminé haciendo fue tener un cheque booleano dentro de Runnable así que cuando el código se ejecutara después del tiempo dado, se dispararía según el valor booleano en ese momento y eso funcionó para mí.
public static Runnable getCountRunnable() {
if (countRunnable == null) {
countRunnable = new Runnable() {
@Override
public void run() {
if (hasCountStopped)
getToast("The count has stopped");
}
};
}
return countRunnable;
}
FYI - en mi actividad destruyo hago uso de código sugerido por el otro los desarrolladores, handler.removecallback y manejador = null; para cancelar el mango solo para mantener el código limpio y asegurarse de que todo se elimine.
- 1. Cómo cancelar un jquery.load()?
- 2. Cómo cancelar un AlertDialog.Builder
- 3. Cómo cancelar/restablecer un UIGestureRecognizer
- 4. cómo detener/cancelar android CountDownTimer
- 5. ¿Cómo puedo "cancelar" un CountDownLatch?
- 6. ¿Cómo cancelar esta alarma repetitiva?
- 7. Cómo cancelar el socket BeginReceive()?
- 8. Extendiendo FutureTask, cómo manejar cancelar
- 9. Cómo cancelar respuesta USSD necesidad
- 10. Cancelar backgroundworker
- 11. ios segue "cancelar"
- 12. Git cancelar una reversión
- 13. JDialog cancelar botón
- 14. cancelar UIAlertView programación
- 15. botón Cancelar en forma
- 16. Cómo cancelar una secuencia de eventos UITouch?
- 17. Cómo cancelar elementos pendientes de un ScheduledThreadPoolExecutor?
- 18. iPhone cómo cancelar la parada performSelector
- 19. Perforce: cómo cancelar una operación de sincronización?
- 20. Cómo cancelar Handler en el código?
- 21. Cómo puedo cancelar una consulta de hibernación
- 22. Cómo cancelar/abortar la solicitud jQuery AJAX?
- 23. Cómo cancelar un socket en C#
- 24. Cómo cancelar la operación diferida MoveFileEx?
- 25. Cómo cancelar la búsqueda resaltada en Eclipse
- 26. Cómo cancelar un trabajo programado en Quartz
- 27. Cómo cancelar el desplazamiento en UIScrollView
- 28. Cómo cancelar popState en ciertas condiciones
- 29. Cómo cancelar RadioButton o CheckBox marcada cambiar
- 30. Cómo cancelar un evento en winforms?
Todo el hilo o simplemente el mensaje? –
Todo el hilo. – Eugene
[Salir] (http://developer.android.com/reference/android/os/HandlerThread.html#quit()) it. –