2014-01-28 122 views
1

我有一個前景服務(START_STICKY因此對於「被操作系統殺死」的方面沒有問題),爲了導航目的,每2秒接收一次位置(GPS)更新。我不採取任何喚醒。我的問題是:我需要一個喚醒鍵來避免深度睡眠?或者位置更新足以「運行」?GPS定位和深度睡眠

+0

通過接收者或聽衆位置更新? –

+0

@Mr_and_Mrs_D通過註冊列表程序 – greywolf82

回答

2

在Android代碼挖掘之後,迴應是:不,你不需要它。 Android會爲你取一個喚醒鎖(LocationManagerService),直到onLocationChange結束或者你的廣播接收器收到這個意圖。如果你做了一些異步工作(啓動一個intent服務,在onLocationChange中發佈一些代碼等等),那麼你需要創建你自己的部分喚醒鎖。

0

我在應用程序中做了同樣的事情(但我使用接收器來接收我推薦的位置更新 - 有很多聽衆的錯誤報告)。你的方式有2個問題:

  1. 服務威力關閉反正
  2. 服務將最終入睡 - 我不知道爲什麼你沒有遵守這一

正確的方法是通過AlarmManager註冊鬧鐘 - 鬧鐘會喚醒接收器。從onReceive()您必須啓動一個WakefulIntentService這將爲您管理鎖。

請參見:

編輯:2秒是真的經常。這會殺死電池 - 預計評級非常低 - 或者將間隔提高。

+0

該服務可能會關閉,但對於具有粘性行爲的我也可以。由於現在我沒有看到任何問題,而且我也沒有得到任何有關這類問題的報告。實際上,我使用單獨的前臺HandlerThread,並在註冊位置列表程序時使用Thread.getLooper()使用此線程。 – greywolf82