Esta es una pregunta bastante abierta, pero permítanme intentar describir cómo veo que la comunicación de aplicación intra/inter funciona mejor.
Uno de los aspectos clave de los mensajes de Android es el concepto de que todos los componentes de la aplicación están poco vinculados. Debido a que todas las aplicaciones se ejecutan en un proceso separado, y una 'aplicación' puede consistir en varias aplicaciones (responsables de proporcionar diferentes actividades o servicios), las técnicas de mensajería se basan en la idea de organizar los mensajes a través de los límites del proceso.
Intentos
La técnica preferida para la mensajería, siempre intenta utilizar un Intención siempre que sea posible. Es la forma más "nativa" de transferir mensajes dentro de Android.
Ventajas
Usando Intentos para mensajería mantiene la unión flexible de componentes de la aplicación, lo que le permite transferir mensajes sin problemas entre varias aplicaciones. Las intenciones se utilizan en gran medida dentro del sistema central para iniciar actividades y servicios, y para transmitir y recibir eventos del sistema.
Usando extras Bundles puede incluir pares clave/valor de primitivas como datos de carga dentro de Intents para pasar fácilmente información de un componente de aplicación a otro, incluso si esos componentes se ejecutan en procesos diferentes.
Desventajas
Debido Intentos están diseñados para ir entre los procesos, la carga útil de extras sólo es compatible con los tipos primitivos. Si necesita enviar un objeto usando un Intento, tendrá que deconstruirlo en primitivas en un extremo y reconstruirlo en el otro.
clase de aplicación
Si sólo desea comunicarse dentro de una sola aplicación que se ejecuta en un solo proceso se trata de una solución práctica.
Ventajas
extendiendo la clase Application
(e implementarlo como un Singleton) se obtiene un objeto que va a existir siempre existe cualquiera de sus componentes de la aplicación, proporcionando un lugar centralizado para almacenar y transferir datos objeto complejo entre los componentes de la aplicación.
Desventajas
Esta técnica limita su programa de mensajería a los componentes dentro de una sola aplicación.
Servicio de Encuadernación, IPC, y AIDL
La unión a un servicio le permite acceder a sus métodos y objetos de intercambio con él. AIDL es una forma de definir cómo serializar un objeto en las primitivas del sistema operativo para que pueda organizarse a lo largo de los límites del proceso si el servicio al que se está vinculando se está ejecutando en una aplicación separada.
Ventajas
Cuando se enlaza a un servicio que tiene acceso a ella como si fuera un objeto dentro de la clase de llamadas. Eso significa que puede ejecutar métodos en el Servicio e intercambiar objetos enriquecidos con él.
Tenga en cuenta que si se une a un Servicio en un proceso de aplicación diferente, deberá crear las definiciones AIDL que le dicen a Android cómo seralizar/deserializar los objetos que desea pasar entre las aplicaciones.
Desventajas
Creación de las clases AIDL para IPC es un poco de trabajo extra, y vinculante crea dependencias adicionales entre los servicios y actividades que pueden hacer que sea más difícil para el kernel para limpiar los recursos cuando otras aplicaciones están siendo famélico.
Sin embargo, la asignación de mensajes a través de los límites del proceso es costosa. Por lo tanto, si no está ejecutando métodos en un servicio, el uso de vinculante e IPC probablemente sea excesivo; vea si puede lograr lo mismo usando Intenciones.
sockets
Si va a recurrir a los sockets para comunicarse dentro o entre aplicaciones que se ejecutan en un solo dispositivo, que es ya sea porque no hay otra manera o te has perdido un truco en alguna parte. Si sus mensajes abandonan el dispositivo, los enchufes son una alternativa buena, rápida. Si te estás quedando en el dispositivo, las posibilidades son Intents o IPC va a ser una mejor opción.
+1 esta es una respuesta ideal que se puede utilizar como una respuesta estándar en toda la comunidad ..... – aProgrammer