我正在編寫包含兩個元素 - 服務和活動的簡單應用程序。活動僅用於啓動和停止服務。服務使用PhoneStateListener
獲取有關當前CellID,LAC和RSSI(信號強度)的信息並將其記錄到文件中。PhoneStateListener onSignalStrengthsChanged停止在服務中調用
一切正常,而手機不睡覺。我注意到,在關閉屏幕和幾分鐘不活動後,我的PhoneStateListener
不再被調用。我嘗試添加PARTIAL_WAKE_LOCK(和其他類型的鎖)到我的服務中,但我猜測它會導致嚴重的電池消耗,不應該以這種方式使用。另一方面,它並沒有真正幫助我。我的另一個嘗試是使用定時器並取消註冊/註冊我的PhoneStateListener
在指定的時間間隔。出乎意料的是,這種方式似乎有助於刷新CellId和LAC(所以我猜想我的聽衆的onCellLocationChanged()
被稱爲),但信號強度仍未更新。
我沒有嘗試使用BroadcastReciever
,但經過一些挖掘主題和閱讀線索,所以我不認爲它適用於我。
綜上所述,我的問題是:爲什麼PhoneStateListener
方法在手機處於睡眠狀態時不會被調用?有沒有辦法(比如強制手機喚醒或使用不同的機制)來有效克服這種行爲?
'沒想到,它看起來是這樣幫助.. 。'不確定這是否意外地作爲聽文件的註釋'在註冊時,當指定的電話狀態改變時,電話管理器i提出適當的回調方法。 – tidbeck