Concurrencia en Android - Parte II

Descubre Looper, MessageQueue y Handler en Android: coordina hilos UI y de trabajo, evita carreras y aplica buenas prácticas con HandlerThread, coroutines y WorkManager.

3 sept 2025 • 4 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Nota: este artículo forma parte de una serie práctica sobre el modelo de concurrencia en Android. En la primera parte repasamos Handler, Message, Runnable y AsyncTask con un caso de uso típico: descargar una imagen desde Internet sin bloquear la interfaz.

En esta segunda parte profundizamos en el corazón del modelo de concurrencia de Android: Looper, Message Queue y Handler, cómo se coordinan y cómo emplearlos para comunicar el hilo principal de la interfaz con un hilo de trabajo. Además, veremos por qué objetos de sincronización como CountDownLatch son útiles para evitar condiciones de carrera.

Modelo asíncrono en una frase: un Handler publica Runnables o envía Messages a la cola de mensajes del Looper, y el Looper procesa esa cola en un bucle continuo, entregando cada mensaje al Handler adecuado para su ejecución en el hilo asociado.

Message loop y Looper: toda interfaz reactiva gira alrededor de un bucle de mensajes. En Android, Looper implementa este patrón. La función prepare crea la Message Queue y garantiza un Looper por hilo mediante almacenamiento local de hilo. El hilo que invoca Looper.prepare pasa a ser el hilo del Looper. La función loop entra en un bucle infinito que extrae mensajes de la cola de manera bloqueante y los distribuye con dispatchMessage al Handler objetivo.

Handler: es el ayudante que conoce el Looper y su Message Queue. Un Handler creado en un hilo con Looper publica mensajes en la cola de ese hilo. El hilo principal de Android ya dispone de Looper, por eso podemos crear Handlers asociados al UI thread sin preparación adicional. Si intentas instanciar un Handler en un hilo sin Looper, fallará porque no hay cola donde encolar los mensajes.

Hilos de trabajo con Looper propio: para que un hilo de fondo procese mensajes, prepara su Looper y crea un Handler asociado antes de iniciar el bucle de mensajes. Secuencia típica: 1 preparar Looper con Looper.prepare 2 crear un Handler sobrescribiendo handleMessage para procesar lo que llegue 3 señalizar que el hilo está listo 4 iniciar Looper.loop para comenzar a consumir la cola.

Enviar mensajes del UI thread a un worker thread sin carreras: 1 en la actividad crea un CountDownLatch con 1 2 arranca el worker pasando la referencia del latch 3 en run del worker invoca Looper.prepare, crea su Handler y al finalizar la configuración ejecuta latch.countDown para indicar que ya puede recibir mensajes 4 de vuelta en la actividad espera con latch.await hasta que el worker esté listo 5 obtén y envía un Message mediante workerThreadHandler.sendMessage 6 en handleMessage del worker realiza el trabajo y, si necesitas tocar la interfaz, usa runOnUiThread o un Handler del hilo principal para publicar el resultado sin bloquear ni violar restricciones de UI.

Buenas prácticas para producción: usa HandlerThread cuando necesites un hilo con Looper persistente administrado por Android; libera el bucle con quit o quitSafely cuando el hilo ya no sea necesario; evita fugas de memoria declarando Handlers estáticos internos con WeakReference al contexto; para flujos modernos considera Kotlin Coroutines con Dispatchers, WorkManager para tareas garantizadas y RxJava si tu proyecto lo requiere, sin perder de vista que internamente Android sigue basándose en Looper, MessageQueue y Handler.

Ejemplo resumido de flujo de mensajes: 1 la actividad arranca el WorkerThread 2 el worker prepara su Looper y crea su Handler 3 el worker avisa con CountDownLatch que ya está listo 4 la actividad envía un Message al Handler del worker 5 el worker procesa el mensaje y devuelve feedback al UI mediante un post al hilo principal.

Q2BSTUDIO puede ayudarte a diseñar arquitecturas móviles robustas que apliquen correctamente este modelo asíncrono, desde la capa de concurrencia hasta la integración con servicios backend y observabilidad. Somos una empresa de desarrollo con foco en aplicaciones a medida y software a medida, especialistas en inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio con power bi, además de automatización de procesos y agentes IA para empresas. Si buscas un equipo que combine rendimiento, seguridad y escalabilidad, descubre cómo abordamos proyectos de aplicaciones a medida y cómo potenciamos productos con inteligencia artificial.

Conclusión: comprender Looper, MessageQueue y Handler es esencial para diseñar apps Android fluidas y seguras. Controlar cuándo crear un Looper, cómo sincronizar el arranque de hilos con CountDownLatch y cómo comunicar hilos de manera segura evita bloqueos y carreras. Este conocimiento, combinado con prácticas modernas como HandlerThread o coroutines, te permitirá crear experiencias móviles de alto nivel listas para escalar.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat