2011-12-09 21 views
9

¿Alguien puede explicar por qué alguien debería usar la función Android Looper para crear un "hilo de interconexión" en lugar de hacer un hilo normal que extraiga tareas de un BlockingQueue? En la superficie, parece que hay dos formas de hacer lo mismo.Android Looper vs BlockingQueue?

Respuesta

4

BlockingQueue le permite tener múltiples consumidores y productores, mientras que el mecanismo Looper le permite tener múltiples productores pero solo un consumidor.

De modo que en el hilo Looper solo ejecuta una tarea (ejecutable) a la vez. El mecanismo de looper fue creado para que pueda ejecutar fácilmente ejecutables (tareas encapsuladas como mensajes) en el subproceso de la interfaz de usuario (que se ejecuta como un único hilo, piense en él como un consumidor de subproceso único)

Looper/Handler también proporcionan funcionalidad para diferido la eliminación de tareas que BlockingQueue fuera de la caja no lo hace. De nuevo, esto es importante en el contexto de los juegos de herramientas de UI.