Introducción a las estructuras de las aplicaciones de Android: actividades, fragmentos y receptores de transmisión

Cómo funciona Broadcast Receiver

Broadcast Receiver se ejecuta en segundo plano y no tiene interfaz de usuario. Están diseñados para responder a Broadcast Intent de manera rápida y eficiente. Estos son algunos puntos clave sobre cómo funciona Broadcast Receiver:

1. Registro:

  • Broadcast Receiver debe estar registrado en el sistema Android para responder a Broadcast Intent.
  • El registro se puede realizar de forma estática (a través de AndroidManifest.xml) o dinámica (mediante código de programa).

Ejemplo de registro estático en AndroidManifest.xml:

  <receiver android:name=“.MyBroadcastReceiver”>
  <intent-filter>
  <action android:name=“android.intent.action.BATTERY_LOW” />
  </intent-filter>
   </receiver>

Ejemplo de inscripción dinámica en código:

  IntentFilter filter  new IntentFilter(Intent.ACTION_BATTERY_LOW);
 MyBroadcastReceiver receiver  new MyBroadcastReceiver();
   registerReceiver(receiver,  filter);

2. Tiempo de ejecución limitado:

  • Broadcast Receiver solo tuvo unos 5 segundos para completar la tarea.
  • Si una tarea tarda más tiempo, como descargar datos o procesar archivos, le recomendamos que inicie Service o utilice WorkManager.

3. Tareas factibles:

  • Enviar notificaciones: notifique a los usuarios sobre cambios de estado, como batería baja o conexiones a Internet.
  • Iniciar servicio: inicie  el servicio para realizar tareas en segundo plano, como la sincronización de datos.
  • Actualizar datos: actualice los datos locales o envíe datos a un servidor.

Tipos de intención de transmisión

Broadcast Intent se pueden dividir en dos tipos:

1. Normal Broadcast:

  • Se envía de forma asíncrona a todos los Broadcast Receiver registrados.
  • Ejemplo: ACTION_BOOT_COMPLETED (se envía cuando el dispositivo termina de arrancar).

2. Ordered Broadcast:

  • Se envía secuencialmente a un Broadcast Receiver a la vez.
  • Broadcast Receiver puede modificar los resultados o detener la propagación de Broadcast Intent.
  • Ejemplo: ACTION_NEW_OUTGOING_CALL (se envía cuando un usuario realiza una llamada saliente).

Ejemplos de uso de receptores de radiodifusión

1. Respuesta a los cambios de batería:

  • Broadcast Receiver puede detectar cuando la batería del dispositivo está baja (ACTION_BATTERY_LOW) o se está cargando (ACTION_BATTERY_OKAY).
  • Ejemplo: Enviar una notificación al usuario cuando la batería está baja.

2. Responder a los cambios en la conectividad de red:

  • Broadcast Receiver puede detectar cambios en la conexión a Internet (ACTION_CONNECTIVITY_CHANGE).
  • Ejemplo: Muestra un mensaje cuando un dispositivo pierde la conexión a Internet.

3. Responder a los mensajes SMS entrantes:

  • Broadcast Receiver puede detectar mensajes SMS entrantes (ACTION_SMS_RECEIVED).
  • Ejemplo: Mostrar notificaciones o procesar mensajes SMS automáticamente.

5. Service: Proceso en segundo plano sin interfaz de usuario

Service es un componente esencial en una aplicación de Android que le permite ejecutar tareas en segundo plano sin una interfaz de usuario. Service es ideal para tareas que deben seguir ejecutándose incluso cuando la aplicación está inactiva, como la transmisión de música, la sincronización de datos o las actualizaciones de ubicación.

Mediante el uso de Service, puede asegurarse de que su aplicación siga funcionando correctamente incluso cuando los usuarios no interactúen directamente con la aplicación.

Tipos de servicio

Service se pueden dividir en dos tipos principales:

1. Started Service

Started Service es un tipo de Service que se inicia mediante otro componente, como Activity o Broadcast Receiver, y continuará ejecutándose hasta que se complete la tarea.

Cómo funciona:

  • Started Service comienza llamando al método startService().
  • Service ejecutará en segundo plano hasta que la tarea se complete o se detenga manualmente.
  • Una vez completada la tarea, el Service se detendrá automáticamente.

Código de ejemplo:

Intent intent = new Intent(this,  MyStartedService.class);
startService(intent);

2. Bound Service

Bound Service es un tipo de Service que se enlaza a otros componentes, como Activity o Fragment, y se ejecutará mientras esos componentes estén activos.

Cómo funciona:

  • Bound Service comienza llamando al método bindService().
  • Service ejecutará mientras haya componentes adjuntos a él.
  • Si todos los componentes liberan la unión, el Service se detendrá automáticamente.

Código de ejemplo:

Intent intent = new Intent(this,  MyBoundService.class);
bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);

Artículos más recientes