2010-02-23 170 views
9

我正在做一個Android手機的耗電研究。我想每10分鐘運行一次電池檢查,直到電池完全死亡。我一直在遇到問題,使其工作。永遠在後臺運行服務..? Android

在我第一次嘗試時,我在服務類中使用計時器,並且每10分鐘安排一次電池檢查。但很快我發現當屏幕熄滅時服務暫停。

然後我嘗試使用AlarmService,每隔10分鐘使用一次警報呼叫喚醒我的服務並檢查電池電量並將數據保存到SD卡上的文件中。它與屏幕一起工作。但是,我只能獲得9小時的數據......看起來AlarmService在幾個小時後的某個時間點停止。我不知道爲什麼它是這樣的,有系統殺死它的內存問題?

所以我的問題是,有沒有人寫過一些服務在後臺運行(像永遠)?你如何做到這一點,我會非常感謝一個示例代碼?

我正在閱讀一些帖子,說有一個部分喚醒鎖,我可以用來保持服務活着..這是正確的方法來做到這一點?

非常感謝,我希望我能在這裏得到一些有用的答案。

回答

10

在我第一次嘗試,我用一個 服務類定時器,並安排 電池檢查每10分鐘。但很快 我發現當屏幕熄滅時服務暫停了 。

你可能沒有拿着WakeLock,所以設備睡着了。

似乎AlarmService停在 一些點幾個小時

我相當懷疑之後。

所以我的問題是,有沒有人寫 一些服務之前 運行(像永遠)的背景是什麼?

無法創建永久運行的服務。應該可以通過AlarmManager創建一個計劃任務,該任務將被「永久」調用。

我目前正在讀一些職位 說,有一個局部喚醒 鎖我可以用它來保持服務 活着..這是做 了正確的方法是什麼?

我不確定「it」是什麼。但是,如果您想讓設備保持清醒狀態 - 無論是第一種方法還是僅僅在AlarmManager觸發的工作中 - 您都需要持有WakeLock

Here is a project幾乎完全符合您所描述的AlarmManager,減去檢查電池電量,但使用WakefulIntentService確保設備保持清醒狀態。如果在電池關閉之前無法運行此代碼,請加入cw-android Google Group並報告您的發現,然後我們再來看看它。

+0

非常感謝您的寶貴信息,我現在用的局部喚醒鎖,以保持我的服務(使用定時器調度)還活着。看起來它效果很好,我會一直等到電池關閉,並確保沒有問題。 再次感謝! – sunocky 2010-02-24 09:58:56

+0

即使服務是前臺服務,屏幕關閉時服務是否暫停? – remi 2013-06-24 05:10:49