2012-07-10 5 views
9

Quiero saber cuál es el significado exacto de removeCallbacks (Runnable r) en Handler. Revisé su documentation y simplemente dice "Eliminar cualquier publicación pendiente de Runnable r que se encuentre en la cola de mensajes".Cuál es el significado de removeCallbacks (Runnable r) en Handler en Android

Ahora mi pregunta es si mi mensaje ya ha sido comenzado a procesar por mi controlador y entre tanto si llamo al removeCallbacks, ¿dejará de procesar mi mensaje medio completo? O incluso si llamo al removeCallbacks, ¿se ejecutará el mensaje que ya ha comenzado a procesar mi controlador (cuando llamo al post(Runnable r))?

Respuesta

8

Los ejecutables solo se deben ejecutar ya que salen de la cola de mensajes, por lo que si su mensaje ya ha comenzado a procesarse, no se debe efectuar llamando al removeCallbacks. Ya debería haber sido eliminado, por lo que continuará el procesamiento.

+0

OK ... Gracias amigo .. !!! – AndroDev

+0

Hola Bill ... Una cosa más ... Si uso una tarea asincrónica y cuando ejecuto onPostExecute y luego invoco asynctask.cancel (verdadero), en ese caso, onPostExecute también se cancelará. – AndroDev

+0

@AndroDev No lo sé. Eso debe publicarse como una pregunta separada. –

10

Cuando crea un nuevo Handler, está vinculado a la cola de mensajes/subprocesos del subproceso que lo está creando. A partir de ese momento, entregará mensajes y ejecutables a esa cola de mensajes y los ejecutará a medida que salgan de la cola de mensajes. removeCallbacks simplemente elimina aquellos ejecutables que aún no han comenzado a procesarse desde la cola.

+0

Gracias Alex. – AndroDev