2012-02-29 57 views
0

我正在開發一個應用程序,它依靠C2DM通知從REST服務中獲取的一些新數據。我已經成功實現了C2DM android功能,但Wifi上的行爲與3G上的連接不同。這些消息是通過3G立即收到的,但我必須手動關閉Wifi,然後進入「寬限期」,在此期間我可以立即收到它們。通過Wifi和3G的C2DM行爲

我的問題是:有什麼辦法可以以編程方式重新啓動連接,或觸發通知獲取?

編輯: 我已經實現了一個AsyncTask,每隔一分半鐘定期「重新關聯」到接入點的連接(使用WifiManager.reassociate())。不過,不太確定這個解決方案的正確性。

回答

0

我見過類似的問題。看起來在某些情況下,當C2DM消息超過3G時,它們不能通過wifi連接傳送。在相關說明中,我也看到Android設備「推掉」推送連接,因此不會傳送消息(在我的情況下,解決方案可能是將設備置於飛行模式,然後重新打開網絡)。

這加強了一個事實,即使用C2DM所有的應用程序應該建立這樣即使推送消息失敗,應用程序仍然有效(即使消息/更新慢,因爲有偶爾輪詢服務器)

我不會親自想要弄亂wifi連接,因爲這可能會給用戶帶來問題。