¿Cuál es la diferencia entre un servicio y un receptor de transmisión?

Sigo escuchando sobre servicios y receptores de transmisión . ¿Cuál es la diferencia entre ellos y cómo afectan el funcionamiento de mi teléfono Android desde mi punto de vista?

En lugar de crear puertos en la capa TCP, siempre creamos receptores de transmisión para ahorrar batería y mucho procesamiento. Cuando ocurre algún evento en Android... la transmisión se envía dentro del teléfono a todas las aplicaciones. tenga el receptor de transmisión para ese evento escrito, se llamará automáticamente. Técnicamente, el evento que ocurrió se llama intención en términos de android

Respuestas (1)

Las aplicaciones de Android tienen tres tipos de componentes. En general, los usuarios no necesitan conocerlos: son una forma de que los autores de aplicaciones programen comportamientos particulares en sus aplicaciones. Pero si está observando de cerca el comportamiento de sus aplicaciones, como con un administrador de tareas, o si está automatizando cosas con una aplicación como Tasker, es útil comprender cómo encajan dentro del sistema.

Una actividad es el tipo de componente más familiar: es una ventana que puede ver: ya sea a pantalla completa o del tamaño de un cuadro de diálogo. Una actividad solo se ejecuta mientras se muestra en la pantalla. Una vez que dejes la actividad, Android mantendrá esa aplicación en la memoria lista para volver a iniciarse, pero la actividad no se ejecutará, lo que significa que no usará la batería ni la red. Una aplicación inicia una actividad usando una intención . La intención puede especificar explícitamente qué actividad iniciar o puede especificar una acción para realizar (como abrir un archivo en particular). Si más de una actividad puede "manejar" la intención, verá el cuadro de diálogo que le pide que elija una.

Un servicio es otro componente de la aplicación. Una vez que otro componente (tal vez una actividad u otro servicio) ha iniciado un servicio, se ejecuta en segundo plano hasta que se detiene. Esto significa que un servicio podría estar manteniendo su teléfono despierto (usando un bloqueo de activación ), agotando la batería o usando muchos datos de red, sin que se muestre nada en la pantalla.

Las aplicaciones pueden usar servicios para realizar procesos de ejecución prolongada en segundo plano, como descargar archivos de un servidor, verificar el correo electrónico o verificar su ubicación. Aunque los servicios no aparecen ni interactúan contigo directamente, sí aparecen en la lista de "Aplicaciones en ejecución". En la aplicación Configuración , seleccione Aplicaciones o Administrador de aplicaciones y, a continuación, En ejecución . Puede detener un servicio de esa manera, pero generalmente no es necesario. Debido a que los servicios no son visibles directamente, Android los considera menos importantes que las actividades, por lo que serán los primeros en desaparecer cuando su teléfono necesite más memoria.

Los receptores de transmisión son el tercer tipo de componente. Al igual que los servicios, solo existen en segundo plano y no interactúan contigo directamente. Pero a diferencia de los servicios, no pueden seguir funcionando ni realizar tareas prolongadas: existen para responder a eventos. Y a diferencia de las actividades y los servicios, se puede iniciar más de un receptor de transmisión a la vez.

Un componente transmite una intención, posiblemente a una aplicación, pero más a menudo sin especificar una aplicación en particular. En este caso, la intención generalmente representa un evento que sucedió, como que la batería se está agotando. El sistema encuentra todos los receptores de transmisión que han registrado un interés (utilizando un filtro de intención) y ejecuta cada uno por turno. Cada receptor de transmisión puede reaccionar de inmediato, por ejemplo, creando una notificación, o puede iniciar un servicio o una actividad para tomar medidas adicionales. Tan pronto como el receptor de la transmisión haya manejado el evento, se detiene y no volverá a ejecutarse hasta que se transmita otro evento similar.

Un ejemplo de los tres componentes que funcionan juntos es cuando descarga una aplicación de Google Play. Primero, la actividad de Google Play proporciona la interfaz visual para que elijas el contenido que deseas descargar. La lista de aplicaciones puede ser una actividad; al hacer clic en el botón "instalar" se inicia otra actividad para mostrar el cuadro de diálogo de confirmación o pago. Cuando confirma, la actividad de diálogo inicia un servicio. El servicio continuará descargando el contenido incluso cuando la actividad haya terminado y ya no se esté ejecutando.

Pero quizás el teléfono pierda la conexión a Internet mientras se descarga la nueva aplicación. Si esto sucede, el servicio de descarga de Google Play registrará un receptor de transmisión, con un filtro de intenciones para indicar que está interesado en los cambios de conectividad de la red, y luego el servicio se detendrá. Cuando el teléfono se conecta a Internet, el sistema transmite un evento. Android iniciará el receptor de transmisión registrado en el servicio Google Play, junto con cualquier otro receptor de transmisión que esté esperando ese evento. En este caso, el receptor de transmisión iniciará nuevamente el servicio de descarga. El servicio creará notificaciones a medida que avanza la descarga y, cuando finalice, enviará su propia transmisión para informar a otras aplicaciones que se instaló el nuevo paquete y luego se detendrá. A su vez, esto iniciará los receptores de transmisión de otras aplicaciones,

En resumen:-

  • Una actividad representa una ventana en la pantalla; un servicio realiza una tarea en segundo plano posiblemente de larga ejecución; un receptor de transmisión se ejecuta por un corto tiempo, para manejar un evento.
  • Los tres se inician con intenciones, pero con un mecanismo diferente. La aplicación de lanzamiento debe indicar explícitamente qué tipo de componente iniciar (llamando a un método diferente en cada caso).
  • Cuando una aplicación inicia una actividad usando una intención, solo inicia una actividad (posiblemente mostrando el cuadro de diálogo "Acción completa usando..." para que pueda elegir cuál), y lo mismo ocurre con los servicios, pero la transmisión de una intención puede iniciar varias transmisiones. receptores, posiblemente de diferentes aplicaciones.
  • Como usuario, interactúa directamente con las actividades; no interactúas con los servicios, pero pueden ralentizar el teléfono y consumir recursos; no interactúa con los receptores de transmisión y, debido a que son de corta duración, no necesita preocuparse por administrarlos.
Una respuesta muy útil. Solo quiero confirmar algo: ¿qué sucede con las aplicaciones que los usuarios deshabilitan? ¿Android alguna vez inicia su receptor de transmisión para los intentos para los que está registrado? ¿O esas aplicaciones deshabilitadas pueden ejecutar su servicio en segundo plano? ¿Por qué el botón Force-Stop no está atenuado para aplicaciones deshabilitadas incluso después de reiniciar? Para mí está claro que sus actividades no pueden lanzarse.
@Firelord Si tiene una nueva pregunta, debe publicarla como una nueva pregunta. Los comentarios no permiten respuestas detalladas y no permiten que otros visitantes puedan encontrar su pregunta.
gran publicación, pero de hecho, hay cuatro componentes. Faltan proveedores de contenido.