Android Remote methods (AIDL) vs Intents – rendimiento y uso de la batería

Mi equipo está trabajando en un proyecto de Android que consiste en varias aplicaciones de Android que intercambian datos (en el mismo teléfono). La idea es tener varias aplicaciones que están recopilando algunos datos y enviar estos datos a la aplicación principal. El principal reto aquí es hacer el intercambio lo más barato posible en términos de carga de la CPU y el uso de la batería.

Hasta donde yo sé, hay dos maneras de lograr comunicaciones entre procesos:

  1. Intenciones y actividades – una actividad capta las intenciones de otro
  2. Métodos remotos (a través de AIDL)

Me pregunto cuál de estos es más eficiente en los siguientes escenarios:

  1. Mensajes / llamadas de método muy frecuentes con muy pocos datos enviados / tráfico (por ejemplo, pasando un montón de primitivos)
  2. Menos frecuentes mensajes / llamadas de método con grandes trozos de tráfico (por ejemplo, recopilar datos y enviar periódicamente unos pocos KB / MB de datos)
  3. Mensajes / llamadas de método muy frecuentes con grandes trozos de datos intercambiados

Agradecería cualquier ayuda, ya sea en términos de comparación o una referencia / enlace a un punto de referencia.

Creo que para 1) sería mejor con un servicio remoto y para 2) y 3) sería mejor escribir a los archivos o una base de datos. Los intentos son más frecuentes para la comunicación interprocesos y el inicio de aplicaciones y servicios.

También puede intentar utilizar código nativo para crear una memoria compartida como una opción alternativa. Echa un vistazo a este enlace para más detalles: http://www.androidenea.com/2010/03/share-memory-using-ashmem-and-binder-in.html

Le sugiero que use el mecanismo de sockets de dominio de Unix para abordar el escenario 3). La alta frecuencia hará que el uso de archivos / bases de datos sea complicado, y de acuerdo con esta respuesta , el uso de IPC de Android no se recomienda rendimiento sabio, ya que cada objeto tiene que ser convertido en (y volver de) un paquete que lleva tiempo. También utilizan tubos Unix pero tiene algunas restricciones:

  • Cómo mejorar el rendimiento de ViewFlipper / ViewAnimator
  • Rendimiento de Android de ThreeJS
  • Cómo deslizar imágenes en ViewFlipper o ViewPager
  • No se puede abrir el archivo open_gapps-arm-6.0-stock-20160220 en genymotion?
  • El buscapersonas de vista automática hace que los fotogramas se descarguen
  • Desventajas en Multidexing la aplicación de Android
  • Efecto de trayectoria de trazo que hace la pantalla lenta
  • Android TextureView vs rendimiento de VideoView
  • Cambiar las pestañas es lento / Laggy - Uso de fragmentos
  • Parse ~ 1 MB JSON en Android muy lento
  • En una aplicación para Android, ¿cuándo se cargan los recursos en la memoria?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.