2010-07-11 71 views
1

手機從睡眠模式中喚醒後,我遇到了移動互聯網連接問題。有一個應用程序定期更新一些數據。 AlarmManager觸發我的BroadcastReceiver開始serviceservice獲取PARTIAL_WAKE_LOCK併發送一些http請求。不幸的是,當更新間隔相當大時(5h),service無法發送/下載任何東西。當我使用WIFI連接而不是移動時出現問題,並且WIFI sleep policy設置爲never。更新時間間隔短(不到半小時)時,移動連接上一切正常。我也確定我的BroadcastReceiver收到5h事件,因爲我已經檢查過它。android dev:手機喚醒後移動互聯網連接問題

應如何處理此類事件。我試着檢查ConnectivityManager是否建立了連接,如果不是,則重試5次,但仍然出現相同的問題。

感謝您的任何回答預先

回答

0

Android系統接通無線網絡的幾分鐘當該裝置被懸浮(即屏幕關閉)。 當設備再次打開(通過獲取喚醒鎖)時,需要幾秒鐘的時間才能重新建立網絡連接(對於3G數據連接也是如此,這些連接在設備休眠時也會被拆除) 。

我的建議:
- 等待ConnectivityManager廣播網絡重新啓動。實踐證明,收到廣播後等待2-3秒有助於在開始發送和接收數據之前解決問題。
- 更容易一點:抓住喚醒鎖後,等待更長的超時時間,然後嘗試連接。

+0

我應該在哪裏獲得喚醒鎖?在'AlarmReceiver'裏面傳遞給'Service'還是直接在'service'中? – boro 2010-07-14 14:18:34

+0

AlarmReceiver更好 - 取決於如何將控制權交給服務(例如通過發送意圖),系統可以再次進入休眠狀態。 – adamk 2010-07-14 14:32:45

+0

「Intent」,我不知道其他方式。所以如果有意圖,我應該如何將它傳遞給'service'。我已經閱讀過Stack,通常它是由'service'中的靜態變量完成的。它可以做得更好嗎? – boro 2010-07-14 14:52:23