2010-09-28 55 views
11

我的應用程序定期使用鬧鈴來檢查位置,以啓動服務的BroastcastReceiver。我知道我應該在開始服務之前獲得一個喚醒鎖,但是我的問題是我什麼時候可以釋放它?Android - 使用LocationManager.requestLocationUpdates時,我需要一個WakeLock嗎?

如果我打電話requestLocationUpdates後釋放喚醒鎖定,可以將設備進入睡眠狀態,而不是叫我LocationListener或將設備總是醒來,提供更新,並保持清醒,直到回調返回?我不願意守住喚醒鎖,因爲這會阻止設備在更新之前進行睡眠,直到完成位置。

+0

我稍有教育的猜測是,請求位置更新將持有一個喚醒鎖,所以你可以釋放你的。然而,你在做什麼,你需要位置更新,當手機睡着了? – Falmarri 2010-09-28 19:25:19

+2

我認爲在設備睡着時可能會有很多用於位置更新的用例,記錄旅程的GPS軌跡。 – 2010-09-29 08:49:47

+0

你可以看看[CommonsGuy的'WakefulService'] [1],根據文檔可以爲你處理部分喚醒事物。 [1]:http://github.com/commonsguy/cwac-wakeful#readme – 2010-09-28 18:05:07

回答

2

所以根據我的經驗(並在此處的評論中確認),在調用requestLocationUpdates之後釋放喚醒鎖似乎不成問題。不幸的是,獲得明確答案的唯一方法是詢問平臺開發人員,但我已收到no response

+1

這是正確的。我不是一個平臺開發者,但有一個工作的GPS跟蹤應用程序,當設備「睡着」時能正常工作......基本上每個後來的位置更新都有自己的'WakeLock',允許您接收'Intent'。在你的接收器中,如果你想處理那個事件,你需要獲得(並在以後發佈)你自己的WakeLock。 – 2013-03-13 07:35:37

+0

你調用requestLocationUpdates方法有什麼區別嗎? @RichardLeMesurier:你正在使用'PendingIntent'版本? – 2013-05-09 21:21:03

+0

@Mr_and_Mrs_D我不知道,並建議您嘗試確認。我正在使用'PendingIntent'版本。 – 2013-05-10 09:26:18

0

檢查省電模式在Android系統設置中:必須禁用該功能才能允許位置管理器在屏幕關閉時生成更新位置;在三星A5上測試;我花了兩天找到這個解決方案:-)