2010-03-25 52 views
5

Android具有Gmail推送功能,這意味着新郵件在未檢查或刷新郵箱的情況下到達郵箱。Android手機上的Gmail同步

據我所知,同步過程是這樣的:
1)用戶接通同步
2)將有一個警報MSG和在該裝置中的Gmail的DB​​中的同步標誌將是True
3)當新郵件到達Gmail服務器,它會檢查設備同步值,如果這是真的,然後發送電子郵件

OK,在這裏,我不太明白究竟是如何它的工作原理,
對於WiFi和蜂窩信號連接,手機是否打開TCP套接字以繼續收聽Gmail服務器,或者當新電子郵件到達服務器時向手機發送短信警報,手機將打開數據通道以獲取電子郵件?這兩種關聯方式有不同的方法嗎?

第二個問題是哪個方法是優先級?
說你正處於接收數據(電子郵件)的過程中,突然手機連接到無線網絡,數據套接字將被關閉,然後重新打開WiFi無線網絡?當運營商的數據通道和WiFi翻轉時,情況如何?

我也下載了源代碼,任何人都知道我應該調查哪個部分以解決我的問題?我在文件夾「package」中找到一個名爲「email」的文件夾,我應該看看它的代碼嗎?

我知道我在這裏問了很多問題,如果你知道其中任何一個的答案,我都會很感激,非常感謝!

+0

請記住,Gmail客戶端不是開源的。它不在您下載的代碼中。 – CommonsWare

回答

6

這在技術上不是Android的一部分,而是Google在Android上運行的專有應用程序套件。它也沒有真正在Gmail中實現 - 谷歌應用程序與谷歌的服務器(建立在GTalk數據協議上,主要是出於歷史原因)共同推送數據連接。當新郵件可用時,推送連接用於向設備發送「癢癢」以表示郵件中有某些內容發生了變化,然後在設備上將該郵件分派給gmail應用程序,該應用程序通過其服務器打開新的套接字連接使本地狀態與發生的任何變化同步。同樣的機制可用於聯繫人和日曆同步,以及諸如激發市場下載等內容。

它的工作方式是一個實現細節,但目前它是通過保持一個開放的套接字連接完成的。在無法播放語音和數據的網絡上,當發生語音呼叫時,連接會斷開。當在wifi和cell之間切換時,連接將被丟棄並重新啓動。

請注意,以這種方式進行推送通知在設備上佔用大量資源,這就是爲什麼經過精心設計以允許一個此類實例支持所有Google服務的原因。