2010-03-25 14 views
5

Android tiene las funciones de inserción de Gmail, lo que significa que el nuevo mensaje llega al buzón de correo sin verificar o actualizar el buzón.Gmail Sync en el teléfono Android

Según entiendo, los procesos de sincronización son como éstos:
1) El usuario activa la sincronización
2) Habrá un msg alerta y la bandera de sincronización en el Gmail DB de este dispositivo será cierto
3) Cuando un nuevo correo electrónico llega al Gmail Server, se comprobará si el valor de la sincronización del dispositivo, si es cierto, entonces enviar el correo electrónico

OK, aquí, no lo acabo de entender cómo funciona exactamente,
Para una conexión WiFi y de señal de celular, ¿el teléfono tiene un socket TCP abierto? sigue escuchando el servidor de Gmail, o cuando llega un nuevo correo electrónico al servidor y a envía una alerta SMS al teléfono y el teléfono abrirá el canal de datos para buscar el correo electrónico? ¿Las dos formas de conexión tienen diferentes enfoques?

Y la segunda pregunta es, ¿cuál método es el más prioritario?
Digamos que cuando está recibiendo datos (correos electrónicos) y de repente el teléfono se conecta a una red inalámbrica, ¿se cerrará el socket de datos y luego se volverá a abrir para el WiFi? ¿Cuál es el comportamiento del caso cuando se vuelca el canal de datos y WiFi de la empresa de transportes?

También he descargado el código fuente, ¿alguien sabe qué parte debería estar buscando para poder resolver mis preguntas? Encontré una carpeta llamada "correo electrónico" dentro de la carpeta "paquete", ¿debería estar mirando su código?

Sé que aquí hice algunas preguntas, agradecería que conociera la respuesta para cualquiera de ellas, ¡muchas gracias!

+0

Tenga en cuenta que el cliente de Gmail no es de código abierto. No está en el código que ha descargado. – CommonsWare

Respuesta

6

Esto técnicamente no es parte de Android, sino del paquete de aplicaciones patentado de Google que se ejecuta en Android. Tampoco se implementa realmente en Gmail: las aplicaciones de Google colectivamente tienen una conexión de datos push con los servidores de Google (basados ​​en el protocolo de datos gtalk, pero principalmente por razones históricas) que comparten. Cuando hay un nuevo correo disponible, la conexión push se usa para enviar un "cosquilleo" al dispositivo para decir que algo ha cambiado en el correo, y en el dispositivo esto se envía a la aplicación gmail que abre una nueva conexión de socket con su servidor para sincronizar el estado local con cualquier cambio que haya sucedido. Este mismo mecanismo se usa para sincronizar contactos y calendarios, así como para instigar descargas del mercado.

La forma en que esto funciona es un detalle de implementación, pero actualmente se hace manteniendo una conexión de socket abierta. En una red que no puede hacer voz y datos, la conexión se corta cuando ocurre una llamada de voz. Al cambiar entre wifi y celular, la conexión se corta y se reinicia.

Tenga en cuenta que hacer notificaciones push de esta manera consume muchos recursos en el dispositivo, por lo que esto se ha diseñado cuidadosamente para permitir que una de estas instancias sea compatible con todos los servicios de Google.

Cuestiones relacionadas