2017-08-12 93 views
3

的我有一個定期運行,以保持網絡連接活動的方法區分。在打盹模式下,我想禁止它定期運行,並在維護窗口中正好運行一次。當設備退出打盹時,我希望再次定期調用該方法。我怎樣才能做到這一點?如何將設備進入打盹維護窗口,並走出打盹

我註冊了一個接收器,用於收聽PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED廣播,然後撥打PowerManager.isDeviceIdleMode()。但是,這兩種情況都會返回false - 在維護窗口期間以及設備退出打盹模式時。我怎樣才能區分它們?

回答

0

我面臨着同樣的問題,雖然我認爲Android必須由接收器發送不同的狀態區分這或提供的功能會問這樣的狀態,我沒有發現任何相關的。

記住,回去當了一段9-10分鐘的時間後,打瞌睡的ACTION_DEVICE_IDLE_MODE_CHANGED再次發射。

的解決方案將是:

設備的當前狀態 - > 「打盹IDLE」

當您收到ACTION_DEVICE_IDLE_MODE_CHANGED和isDeviceIdleMode()是假的 您的狀態是 「出瞌睡懷疑」 -DO你的方便窗口工作,並在將來設置鬧鐘15分鐘。

上的下一個模式改變。

如果ACTION_DEVICE_IDLE_MODE_CHANGED在警報和isDeviceIdleMode()爲true之前觸發,那麼這是一個Mantenience窗口。 「不打瞌睡」, (關閉鬧鐘)。

如果報警率先打響,這意味着它是一個「出瞌睡真正的證實」,用於「瞌睡的」在報警

瞌睡的時機是在文檔 -Do您的設置。一定要先檢查一下。 (未來可能會發生變化,因爲已經發生了*可能有一個不變的價值 - 我不知道)。

我認爲這是一個黑客,而不是一個完整的解決方案fedged。但它的工作原理,直到任何未來的擴展工作在android上提供另一個調用ACTION_DEVICE_IDLE_MODE_CHANGED,「打瞌睡」的狀態。

相關問題