Largo tiempo de conexión TCP persistente en el Android

He leído algunos artículos en la web y algunas preguntas sobre StackOverFlow, pero nadie parece tener una respuesta definitiva sobre a) Si google utiliza Long Lived conexiones TCP para Gmail, etc Mail, yb) si se utiliza en una aplicación personalizada Se agotará la vida de la batería, y si es así aproximadamente cuánto?

La respuesta a su primera pregunta es que, sí, GTalkService de Google mantiene una conexión XMPP persistente a los servidores de Google, en teléfonos Android con las aplicaciones de Google instaladas.

En cuanto a su segunda pregunta, la respuesta a eso es más complicada que algunos de los comentarios aquí le harían creer. En particular, los paquetes keepalive de las conexiones adicionales (o cualquier transferencia de datos pequeña pero continuada) pueden afectar el ciclo de estado de administración de energía de su radio 3G, lo que tendrá un impacto notable en la vida de la batería.

Vea este artículo para más información:

https://labs.ericsson.com/developer-community/blog/smartphone-traffic-impact-battery-and-networks

Si es posible, considere la posibilidad de utilizar la nueva API de mensajería de Cloud a dispositivo que se agrega a GTalkService, lo que permite a su aplicación recibir notificaciones sin mantener su propia conexión TCP. Las desventajas, por desgracia, son que C2DM no funcionará en Android de código abierto puro, requiere que el usuario acceda a su cuenta de Google, y sólo está disponible en Froyo o superior.

El mantenimiento de una conexión abierta puede traducirse en un menor uso de recursos: un pequeño tráfico de "goteo" puede mantener abierta la conexión.

Considere la situación opuesta: el cliente "encuesta" el servidor en un intervalo regular (asumir la misma tasa de "actualización" que para la conexión de larga duración "trickle"): cada vez que se abre una nueva conexión genera más tráfico.

Conexión de configuración / desmontaje es caro (por supuesto, todo es relativo en este universo ;-).


Principales inconvenientes de mantener una conexión abierta:

  • El navegador del lado del cliente puede estar limitado en el número de conexiones por ventana / pestaña, etc.
  • Dispositivos intermedios (por ejemplo, NAT, cortafuegos) no pueden reutilizar el puerto con tanta frecuencia para atender otras solicitudes
  1. Puede usar una herramienta como tcpdump o wireshark en su enrutador u otra máquina para determinar cuánto tiempo las conexiones TCP se mantienen abiertas por las aplicaciones de Google. Deberá filtrar los puertos o direcciones que le interesen.
  2. Si está utilizando Android 1.6 , la mejor manera de determinar el desagüe es usar el nuevo indicador de uso de la batería. Simplemente instale su aplicación personalizada y vea lo que el monitor dice con el tiempo.
  • Implementación cliente / servidor de socket TCP de Android
  • Conexión adb sobre tcp no funciona ahora
  • ¿Cómo puedo mantener mi aplicación en segundo plano?
  • El consumo de la batería mientras TCP está abierto para ADB vía wifi puede conectar
  • Llegar a un dispositivo de red por IP y puerto mediante el emulador de Android
  • ¿Cómo puede un emulador androide ponerse en contacto con la máquina desarrolladora del host en eclipse?
  • La mejor estrategia de comunicación entre el cliente de Android y el servidor de .Net C #
  • Mejores prácticas de la conexión TCP de Android
  • No se puede conectar Android ADB a TCP / IP
  • Transmisión de voz sobre tcp
  • Servidor RPC basado en TCP (Erlang o algo similar?) Para la comunicación de aplicaciones iOS / Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.