2017-02-16 75 views
1

我想更新我的應用程序到Android 6,並使用alarmanager來管理我的後臺服務。對我的服務來說,重要的是在一個大約一小時的長窗口內醒來。它必須在那個窗口醒來,所以一旦設備退出打瞌睡,但在窗口醒來時我不在乎。Android打盹報警窗口

我現在使用.setWindow設置我的鬧鐘。當我需要它與睡眠模式一起使用時,我需要使用什麼?沒有setWindowAndallowWhileIdle

而且據我所知,設置一個窗口,而不是一個固定的時間應特別優選的,而在休眠模式下

回答

0

它看起來像Android這樣終於決定要嚴格有關電池優化,因此打盹模式很難bypass。總的來說,你真的不應該在一個靜止幾個小時的設備上做任何工作,而是等待一個維護窗口(工作將開始)或用戶拿起他們的設備。

對於做不精確或定期的工作,請探索JobScheduler:這實際上是它的目的,併爲您提供良好的多樣性[根據週期性,計量/無計量網絡,收費等標準]。

他們不希望我們在打瞌睡時做任何工作。因此,從我所能想到的情況來看,從現在開始,「每小時一次」的使用情況只能是最好的承諾。附表和'希望'。話雖如此,Android N有更多'practical'(寬鬆版)的休眠模式,其維護窗口更快。你可以測試,我的感覺是,它不像聽起來那麼陰沉。政策是公平的:如果用戶顯示與電話交互的意圖,他們會觸發工作。

裁判 https://www.bignerdranch.com/blog/diving-into-doze-mode-for-developers/

+0

我的應用程序的整點是當用戶不與設備交互記錄數據。所以我需要在打盹模式下喚醒設備。所以我認爲它很糟糕,我必須設置一個確切的警報,以確保它在我的窗口中發生,而不是設置一個窗口,並給系統提供更多的可能性來批量報警。 – Ben

+0

是的,你是對的,設置確切的警報[無論如何不是確切的19後],而不是窗口看起來像你的方式。 「我的應用程序的重點是在用戶沒有與設備進行交互時記錄數據」 - 這正是android不再需要的。他們的觀點是蓄電池漏電不應該發生在閒置的設備上。由於用戶沒有使用相同的。 –