2011-03-30 9 views
6

Una pregunta rápida: los documentos de Android dicen muy claramente que Messenger es una alternativa para AIDL para IPC (comunicación entre procesos). Sin embargo, nunca dicen explícitamente si esto se extiende a procesos que se ejecutan en diferentes aplicaciones, o solo dentro de una aplicación. Sospecho fuertemente lo primero, pero quería verificar.¿Se puede utilizar Can Messenger (alternativa ligera a AIDL) para la comunicación entre aplicaciones?

Gracias! Jan

Respuesta

8

AIDL solo se usa realmente para IPC entre aplicaciones. Si bien es posible utilizar AIDL para la comunicación interna, no le compra nada y pone limitaciones a sus implementaciones Binder.

Además, una aplicación no tiene más de un proceso, en la gran mayoría de los casos. Hay pocas razones para que la mayoría de las aplicaciones tengan múltiples procesos.

Messenger, createPendingResult(), ResultReceiver, la radiodifusión privada Intents - todos estos son formas para que un servicio para comunicarse con un cliente a través de límites de proceso.

+0

¡Estupendo! Supongo que esto significa que Messenger puede hacer una comunicación entre aplicaciones. ¡Muchas gracias! –

0

Messenger utiliza internamente AIDL, se puede usar en múltiples aplicaciones. Según la documentación de Android, un servicio de Messenger se puede usar para la comunicación entre dos procesos pero no lo restringe en la misma aplicación. Los procesos pueden estar en la misma aplicación o diferentes solicitud.

Messenger debe usarse si queremos que las solicitudes se procesen secuencialmente ya que ingresan los mensajes en la cola del manejador y se procesan una por una, mientras que en AIDL todas las solicitudes se manejan a la vez y se convierte en responsabilidad del desarrollador mantener el hilo la seguridad.

Cuestiones relacionadas