Diferencia entre servicios y receptores de radiodifusión

Im tratando de entender lo que la diferencia entre un servicio y un receptor de radiodifusión es, como veo que pueden hacer lo mismo.

Por ejemplo, tengo una aplicación: App1 que proporcionan un servicio llamado ToastHelloWorld que sólo crea un Toast y stopSelf (). Lo expongo a otras aplicaciones usando un filtro de intención con el nombre de la acción: "com.test.HelloToast"

Ahora tengo otra aplicación: App2 quiero utilizar implícitamente un servicio con la acción "com.test.HelloToast" por lo que llamar a startService (new Intent ("com.test.HelloToast"));

y funciona.

¿Por qué utilizaría los receptores de radiodifusión cuando puedo hacer todo con los servicios y no tienen la restricción de un límite de ejecución 5sec ?.

Sé que la mayoría de los "eventos del sistema" están expuestos a través de transmisiones, pero no podrían simplemente publicarse como Intents de servicio?

Las intenciones de difusión generalmente se entregan a todos los BroadcastReceivers registrados para esa intención. (Hay una excepción con las intenciones ordenadas en las que un receptor puede abortar la entrega para los receptores de menor prioridad) Los intentos que comienzan o enlazan servicios solo se envían a una instancia de servicio coincidente.

Algunas intenciones de difusión son pegajosas. Eso significa que podrían haber sido enviados en el pasado y serán entregados cuando su aplicación registre al receptor.

El servicio se utiliza cuando se desea realizar algo en segundo plano, cualquier proceso de ejecución prolongada se puede realizar utilizando el servicio en segundo plano. Por ejemplo, desea reproducir música cuando su aplicación se acerque. En ese caso, el servicio se ejecutará en segundo plano con música.

BroadcastReceiver se utiliza cuando se desea disparar algunas cosas o código durante algún evento. Por ejemplo, el evento puede estar en Boot of Device. Si quieres realizar algo cuando las botas del dispositivo, fecha y hora cambian, etc …

La mayor diferencia es que BroadcastReceiver se ejecuta en el subproceso principal de UI de forma predeterminada (puede especificar un subproceso diferente) y, por lo tanto, está limitado a la regla de ejecución de 10 segundos. Los servicios, por otra parte, pueden funcionar indefinidamente hasta que el sistema operativo decida matarlos.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.