Broadcast Receivers
Explicación del concepto de Broadcast Receiver.
Last updated
Explicación del concepto de Broadcast Receiver.
Last updated
Todas las Apps de Android pueden recibir mensajes de emision (Broadcast messages) desde el sistema de Android u otras Aplicaciones. Para ello se utiliza el patrón de diseño de publicación y suscripción.
Estas emisiones se envían cuando ocurre un evento de interés.
El sistema de Android emite estos mensajes por ejemplo en los siguientes casos: batería por debajo del 15%, GPS activado / desactivado, modo avión activado / desactivado o conexión a una red WIFI entre otros.
Por otro lado, las Apps también pueden emitir este tipo de mensajes de manera personalizada cuando se ha dado una situación que puede afectar a otras Apps.
Las apps pueden registrarse para recibir emisiones específicas. Cuando se envía una emisión, el sistema redirige automáticamente las emisiones a las apps que se suscribieron para recibir ese tipo de emisión particular.
Por lo general, las emisiones pueden usarse como un sistema de mensajería entre apps y fuera del flujo de usuarios normal. Sin embargo, debes tener cuidado de no abusar de la oportunidad de responder a las emisiones y ejecutar tareas en segundo plano que puedan contribuir a ralentizar el rendimiento del sistema.
Como ejemplo vemos los Broadcast Messages de la App de la cámara que se correspondían con ACTION_NEW_PICTURE y ACTION_NEW_VIDEO.
Estos mensajes que emitía la App de la cámara fueron eliminados en Android 7.0 debido a que las Aplicaciones se despertaban para responder a dicho mensaje y generaban problemas de rendimiento, llegando a afectar al buen funcionamiento de la Cámara.
Por este motivo es fundamental no abusar de las respuestas ante estos Broadcast Messages.
Los Broadcast Receivers son los elementos declarados en la App que se suscriben a un tipo específico de Broadcast Message y se mantienen a la escucha. Se pueden dar dos tipos:
Si declaras un receptor de emisión en tu manifiesto, el sistema inicia la app (si aún no está en ejecución) cuando se envía la emisión.
Si tu app se orienta a la API nivel 26 o una versión posterior, no puedes usar el manifiesto para declarar un receptor de emisiones implícitas (emisiones que no se orientan específicamente a tu app), excepto por algunas emisiones implícitas que están exentas de esa restricción.
En la mayoría de los casos, puedes usar tareas programadas en su lugar.
Los receptores registrados en el contexto reciben emisiones siempre que su contexto de registro sea válido.
Por ejemplo, si te registras en un contexto Activity
, recibirás emisiones siempre y cuando no se elimine la actividad. Si te registras con el contexto de la aplicación, recibirás emisiones mientras la app esté en ejecución.