2010-03-25 6 views
5

Android verfügt über die Google Mail-Push-Funktionen, was bedeutet, dass die neue Nachricht im Postfach eintrifft, ohne das Postfach zu überprüfen oder zu aktualisieren.Google Mail-Synchronisierung auf Android-Telefon

Wie ich verstehe, sind die Synchronisationsprozesse wie diese:
1) Benutzer schaltet die Sync
2) Es wird ein Alarm msg und die Sync-Flag in der Google Mail-DB dieses Gerätes wahr sein wird
3) wenn eine neue E-Mail, die Google Mail-Server erreicht, wird es prüfen, ob das Gerät Sync-Wert, wenn es dann die E-Mail

OK senden stimmt, hier, ich verstehe nicht ganz, wie genau funktioniert es,
Für eine WiFi und Cell-Signal-Verbindung, hat das Telefon ein TCP-Socket geöffnet, hören Sie auf den Google Mail-Server, oder wenn eine neue E-Mail kommt der Server und es sendet eine SMS-Benachrichtigung an das Telefon, und das Telefon öffnet den Datenkanal, um die E-Mail abzurufen? Haben die beiden Arten von Verbindungen unterschiedliche Ansätze?

Und die zweite Frage ist, welche Methode hat Priorität?
Sagen Sie, wenn Sie mitten im Empfang von Daten (E-Mails) stehen und das Telefon sich plötzlich mit einem drahtlosen Netzwerk verbindet, wird der Datensocket geschlossen und dann wieder für das WiFi geöffnet? Wie verhält es sich mit dem Fall, wenn der Datenkanal des Carrier und das WiFi-Flipflop wechselt?

Ich habe auch den Quellcode heruntergeladen, weiß jemand, in welchen Teil ich schauen soll, um meine Fragen zu lösen? Ich habe einen Ordner namens "email" im Ordner "package" gefunden, sollte ich mir den Code ansehen?

Ich weiß, ich habe hier einige Fragen gestellt, ich würde mich freuen, wenn Sie die Antwort für eine von ihnen wissen, vielen Dank!

+0

Bedenken Sie, dass der Google Mail-Client nicht Open Source ist. Es ist nicht in dem Code, den Sie heruntergeladen haben. – CommonsWare

Antwort

6

Dies ist technisch nicht Teil von Android, sondern eher die proprietäre Anwendungssuite von Google, die auf Android läuft. Es ist auch nicht wirklich in Gmail implementiert - die Google Apps haben zusammen eine Push-Datenverbindung mit den Servern von Google (basierend auf dem gtalk Datenprotokoll, aber meistens aus historischen Gründen), die sie teilen. Wenn neue Mail verfügbar ist, wird die Push-Verbindung verwendet, um ein "Tickle" an das Gerät zu senden, um zu sagen, dass sich etwas in der Mail geändert hat. Auf dem Gerät wird dieses dann an die Google Mail-App gesendet, die eine neue Socket-Verbindung mit ihrem Server öffnet um den lokalen Zustand mit den Änderungen zu synchronisieren. Der gleiche Mechanismus wird für Kontakte und die Synchronisierung von Kalendern verwendet, sowie für Dinge, die das Herunterladen von Downloads vom Markt anregen.

Die Art und Weise, wie dies funktioniert, ist ein Implementierungsdetail, aber derzeit geschieht dies, indem eine offene Socketverbindung aufrechterhalten wird. In einem Netzwerk, das keine Sprache und Daten verarbeiten kann, wird die Verbindung unterbrochen, wenn ein Sprachanruf stattfindet. Beim Wechsel zwischen WLAN und Zelle wird die Verbindung unterbrochen und neu gestartet.

Beachten Sie, dass das Ausführen von Push-Benachrichtigungen auf dem Gerät sehr ressourcenintensiv ist. Aus diesem Grund wurde dieses Verfahren so konzipiert, dass eine solche Instanz alle Google-Dienste unterstützen kann.