La comunicación entre dos procesos diferentes (un servicio y una actividad) en Android se puede administrar via Messenger or AIDL: es suficiente que una actividad se vincule a un servicio.¿Cómo manejar el IPC entre un servicio y una actividad (y su subactividad)?
Sin embargo, ¿qué sucede si esta actividad tiene una o más subactividad? Desde el momento en que la actividad principal comienza una subactividad, me gustaría que la comunicación sea redirigida a la subactividad; Del mismo modo, cuando se destruye la subactividad, me gustaría que la comunicación se redirige de nuevo a la actividad principal, etc ..
Ejemplo # 1:
- MyService < --- --- IPC> MainActivity
- MainActivity lanza subactividad, entonces MyService < --- --- IPC> subactividad
- subactividad se destruye, entonces MyService < --- --- IPC> MainActivity
Ejemplo # 2:
- MyService < --- IPC ---> MainActivity
- MainActivity lanza FirstSubActivity, entonces MyService < --- IPC ---> FirstSubActivity
- FirstSubActivity lanza SecondSubActivity, entonces MyService < --- --- IPC> SecondSubActivity
- SecondSubActivity se destruye, entonces MyService < --- --- IPC> FirstSubActivity
- FirstSubActivity se destruye, entonces MyServi ce < --- IPC ---> MainActivity
¿Cómo manejar estos casos?
La documentación sobre [sendBroadcast] (http://developer.android.com/reference/android/content/Context.html#sendBroadcast%28android.content.Intent%29) dice que _no los resultados se propagan desde los receptores y receptores no puede abortar la transmisión. – enzom83
Eso es verdad. Pero en sus ejemplos, he visto que ha puesto énfasis en la comunicación entre el servicio y la actividad. Por lo que el mecanismo que he descrito anteriormente es simple y si usa correctamente los Receptores y las Intenciones de transmisión puede resolver su problema. (Eso es en mi opinión) –
Claro, podría usar un receptor de transmisión en la actividad para recibir la intención del servicio, y otro receptor de difusión en el servicio para recibir el intento de la actividad. Sin embargo, al enviar un mensaje en emisión, no es posible hacerlo de modo que solo sea recibido por un paquete específico, porque no es compatible con las versiones anteriores a 4: [_ Alternativamente, comenzando con ICE_CREAM_SANDWICH, también puede restringir de forma segura transmitido a una única aplicación con Intent.setPackage_] (http://developer.android.com/reference/android/content/BroadcastReceiver.html). – enzom83