2012-01-05 122 views
1

我做了連接到我的服務器每隔5-10分鐘,檢查是否有在數據庫中的一些變化的應用程序。安卓應用程序在後臺漏電池耗盡

所以我使用服務,使應用程序可以在後臺運行,用戶可以在狀態欄關閉應用程序,並獲取消息。在裏面我使用線程,使應用程序睡5-10分鐘。當我鎖定手機時,問題就開始了。比應用程序只是停止(這是因爲當你鎖定手機進入「休眠」),所以我想通了,我需要這樣的:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 'My Tag');  
wl.acquire(); 

這就使得手機不要去睡覺除屏幕。但是,我卡住了。這工作正常,但耗盡電池。 10%每小時:(我相信,沒有一個問題,應用程序必須使這些Web服務請求所有thime,但強制該手機活着的功能

所以,我的問題是,如果有是我可以使用的任何其他解決方案,因爲我有一些在backgorund運行的手機上的應用程序,但他們不會耗盡電量太多(avast,果汁後衛等)。 !

的問候!

回答

1

有關使用推送機制,如C2DM for Android,而不是投票所有什麼時間。

1

你必須儘快釋放wakelocks。不要使用它們。請嘗試使用廣播接收器和AlarmManger來做你想做的事。

1

報警經理和Broadcst接收器是你的朋友。而且你也可以考慮一下,如果手機位於穿褲子的屁股袋深處,狀態欄中的變化是多麼重要。是不是像這樣重要呢?即使在這種情況下它也必須發生?

0

你可以建立一個AlarmManager與RTC標誌,每5分鐘啓動服務(也許IntentService越好),內部服務獲取激活鎖定,而做網絡運營,並儘快完成後停止該服務。

相關問題