Handler.removeCallbacksAndMessages (null) y looper principal

En el onDestory de un fragmento, puse el código para limpiar todos los runnables pendientes que comencé usando Handler.postDelayed.

mUiHandler.removeCallbacksAndMessages(null); 

Tengo una pregunta aqui. ¿Es seguro llamar a mUiHandler.removeCallbacksAndMessages (null) ;? Lo que yo entiendo es que Android hace todas las operaciones de la interfaz de usuario, como el diseño de la interfaz de usuario, la representación de la interfaz de usuario, los ciclos de vida de los componentes (onCreate, onPause, onResume) en looper principal. ¿Lo entiendo correctamente? Entonces, cuando llamo mUiHandler.removeCallbacksAndMessages (null) en un fragmento, se ensuciará o limpiar todas las operaciones de interfaz de usuario del sistema Android en la cola de mensajes en looper principal, ya que sólo hay una cola de mensajes en looper principal.

Gracias.

Esto sólo eliminará mensajes y devoluciones de llamada que se han publicado en ese controlador específico . No eliminará nada más, así que sí, eso es seguro. 🙂

EDIT: comparte la Queue con el Looper , pero comprueba contra el objetivo del mensaje para asegurarse de que provenía del mismo Handler antes de eliminarlo. Desde MessageQueue.java :

 void removeCallbacksAndMessages(Handler h, Object object) { if (h == null) { return; } synchronized (this) { Message p = mMessages; // Remove all messages at front. while (p != null && p.target == h && (object == null || p.obj == object)) { Message n = p.next; mMessages = n; p.recycle(); p = n; } ... } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.