Websockets versus GCM en Android: ¿uso de la batería?
battery google-cloud-messaging (1)
Dado que varias aplicaciones utilizan GCM, que utiliza una conexión de un solo zócalo a la nube de Google, hacer que su aplicación use GCM para notificaciones no debería afectar la vida útil de la batería, ya que solo utiliza una conexión existente. Por otra parte, cualquier proceso que cree utilizando websockets, el uso de la batería solo se agregará a GCM.
Además, si necesita mantener su conexión, incluso cuando la aplicación no está en primer plano, será necesario crear su aplicación como un servicio de primer plano. GCM maneja esto por ti.
Actualizar
Un dispositivo que no tiene otras aplicaciones que utilizan GCM es un caso muy raro, ya que muchas aplicaciones esenciales como gmail utilizan GCM. No tengo números exactos del uso de la batería de GCM. Pero el uso de la batería de C2DM (el predecesor de GCM que usa el mismo modelo de comunicación subyacente) se menciona en este video alrededor de 4 minutos. De hecho, tuve una pregunta similar sobre el uso de la batería de una conexión de socket persistente a un servidor externo ( socket persistente de Android reglas de conexión ). Aunque no es un websocket, me imagino que el uso de la batería es similar. Pero, una vez más, dado que GCM está integrado en un nivel mucho más bajo del sistema operativo, me gustaría verlo más optimizado que una solución personalizada.
A menos que tenga alguna política de la empresa contra el uso de un servidor de terceros o algunas especificaciones muy específicas, recomendaría el uso de GCM. También me gustaría animar a ver el video completo sobre C2DM, así como este video para GCM .
Necesito mantener un canal de comunicación abierto y bidireccional entre una aplicación de Android y un servidor externo. Sé que puedo usar GCM para esto, pero por varias razones que no se relacionan con Android, me gustaría usar websockets, si es posible.
¿Alguien puede indicarme una comparación de estadísticas de uso de recursos / batería cuando utilizo GCM en comparación con un cliente websockets basado en Java con Android?
Gracias por adelantado.