我有每10秒鐘對服務器(http客戶端)做一些請求的應用程序。我讀了很多關於應用程序生命週期我的應用程序具有前景標誌服務,當android處於「活動狀態」時,它可以很好地工作(應用程序可以工作)。我沒有真正的android手機,所以我正在模擬器上測試,但我的朋友在智能手機上測試它,他注意到當他離開他的手機時,請求會發布10,30分鐘甚至一小時。如果他打開屏幕,則請求時間回到10秒(他可以訪問服務器以便看到日誌)。這是已知的行爲嗎?因爲他從谷歌安裝了gmail notifier,並且這個問題(很大的延遲)。任何解決方案?我的服務有定時器任務(所以請求被異步任務發送)Android - 手機處於空閒模式時網絡速度慢
問候
服務啓動此計時器: @Override 公衆詮釋onStartCommand(意向意圖,整數標誌,整數startId){ \t \t timerMain =新定時器(真); \t \t timerMain.schedule(new mainTask(),1000,9000); \t \t \t \t startStatusNotification(); //我們希望此服務繼續運行,直至明確地 //停止,因此返回粘性。 return START_STICKY; } 在mainTask()方法中調用httpclient請求。我知道這可能會耗盡電池電量,但這個應用程序有點「我想要立即這個事件」,用戶知道它並知道風險。爲什麼android認爲用戶? – Dibo 2012-08-07 23:02:03
我還沒有找到關於30分鐘的信息,但通常你是對的。有三種無線電狀態:全功率,低功率和空閒,並在不同時段之間切換。詳細描述android如何使用網絡工具可以在這裏找到(http://developer.android.com/training/efficient-downloads/efficient-network-access.html) – marwinXXII 2012-08-07 23:07:50
您可能需要安排一個'WakeLock',以便安卓知道什麼時候醒來爲您服務。我認爲,默認情況下,android並不會喚醒定時器的請求,而定時器的請求會按照我的解釋進行安排。另一方面,WakeLocks可以強制android喚醒。 [我更新了我的答案。] – Madushan 2012-08-07 23:35:58