系統會根據裝置狀態、應用程式狀態和應用程式待命值區,為應用程式資源要求設定優先順序。
Android 系統可透過兩種方式強制執行資源限制。如要最佳化資源使用率,一種方法是延後執行工作,直到裝置離開低耗電裝置狀態 (例如打盹模式) 為止。舉例來說,系統會延遲執行一般工作和不精確的鬧鐘,等裝置離開休眠模式後再執行。
另一種方法是根據應用程式目前的待命值區,減少應用程式喚醒裝置和執行工作的次數。系統可以減少頻率 (應用程式喚醒裝置的頻率) 和總持續時間 (裝置保持喚醒的時間長度)。舉例來說,如果應用程式位於「很少使用」待機值區,則可在 24 小時的滾動期間內,執行總計 10 分鐘的排定工作。
請注意,當應用程式處於不可見狀態,且工作資源限制會影響 worker 時,WorkManager 會使用 JobScheduler 安排工作。
如要進一步瞭解限制條件,請參閱:
請注意,裝置狀態和應用程式狀態可取代應用程式待機值區限制。舉例來說,如果裝置正在充電,系統會允許很少使用待命值區中的應用程式在 24 小時滾動期間執行超過 10 分鐘的工作。
行為變化也影響了資源限制。如要進一步瞭解相關資訊,請參閱「影響資源限制的 Android 行為變更」。
根據裝置狀態設定的資源限制
系統也可以根據裝置狀態,豁免或強制執行資源限制。舉例來說,處於充電狀態的裝置會獲得無限制的資源存取權,無論其應用程式待機桶為何。
裝置狀態 |
工作機會 |
鬧鐘 |
網路存取 |
Firebase 雲端通訊 |
充電中 |
除了受限制待機值區以外,沒有執行限制 |
所有待命區塊和程序狀態均無執行限制,但如果使用者手動限制應用程式電池,則不在此限 |
無限制 |
無限制 |
螢幕開啟 |
執行限制會根據待命值區強制執行 |
執行限制會根據應用程式程序和待命值區強制執行 |
存取權取決於待命值區或應用程式程序狀態 |
無限制 |
螢幕關閉且 Doze 模式已啟用 |
系統會根據待命值區強制執行限制,並將執行作業延後至休眠維護期間 |
系統會根據待命值區強制執行執行限制。 定期鬧鐘:延遲至 Doze 維護期間 閒置狀態鬧鐘:上限為每小時 7 次 |
在休眠期間受到限制 |
高優先順序:沒有執行作業數量限制 一般優先順序:延後至 Doze 維護期間 |
根據應用程式狀態設定資源限制
系統是否會強制執行應用程式待命值區的資源限制,取決於應用程式程序的重要性。請參閱 ActivityManager.RunningAppProcessInfo.importance
,瞭解不同程度的程序重要性。
裝置使用者也可以選擇手動覆寫應用程式電源管理最佳化設定,這會取代應用程式待命值區限制。
應用程式狀態 |
工作機會 |
鬧鐘 |
網路 |
應用程式程序可見或處於前景狀態 |
沒有執行限制 |
沒有展示頻率限制 |
無限制 |
應用程式程序正在執行前景服務 |
執行限制會根據待命值區強制執行*** |
系統會根據待命值區強制執行展示頻率限制 |
無限制 |
使用者手動限制應用程式電池用量 |
執行作業受到限制 |
執行作業受到限制 |
存取權取決於待機值區行為 |
使用者手動取消應用程式電池限制 |
執行限制很寬鬆*** |
沒有執行限制 |
除非裝置處於數據節省模式,否則不受限制 |
*** 工作執行配額行為在 Android 16 中有所變更。在 Android 16 之前,如果應用程式執行前景服務,或使用者未限制應用程式電池使用量,就沒有執行限制。
根據應用程式待命值區設定的資源限制
注意:由於其他裝置條件或值區塊變更可能會影響資源限制,因此本表中的值並不能保證執行時間。這些值在日後的 Android 版本中也可能有所變動。
系統可根據應用程式待命值區限制一般工作、急件工作、鬧鐘和網路存取權。瞭解應用程式待命區塊如何影響應用程式,並將這些大致的電源管理限制做為指南。為獲得最佳效能,請遵循 應用程式待命最佳做法,並為任務排程 API 最佳化電池用量。
請注意,自 Android 13 起,應用程式的待命區塊不再決定應用程式可使用的高優先順序 FCM 數量。
應用程式待命值區 |
一般工作* |
急件作業** |
鬧鐘 |
網路 |
有效參考檔案數: |
每 60 分鐘最多 20 分鐘*** |
在 24 小時內最多 30 分鐘*** |
沒有執行限制 |
無限制 |
工作組: |
在 4 小時內最多 10 分鐘 |
在 24 小時內最多 15 分鐘 |
上限為每小時 10 次 |
無限制 |
常用: |
在 12 小時內最多 10 分鐘 |
在 24 小時內最多 10 分鐘 |
上限為每小時 2 次 |
無限制 |
罕見: |
每 24 小時最多 10 分鐘 |
在 24 小時內最多 10 分鐘 |
上限為每小時 1 次 |
已停用 |
受限制: |
每天一次,最長 10 分鐘 |
在 24 小時內最多 5 分鐘 |
已停用 |
* 一般工作是指未使用 JobScheduler 中的 setUserInitiated(true)
或 setExpedited(true)
旗標,或 WorkManager 中的加急工作站 的工作。
** 快速工作與一般工作有不同的執行限制,可以在 WorkManager 中設定,以便在用盡快速限制後,繼續使用一般工作執行限制執行。
*** 工作執行配額行為在 Android 16 中有所變更。在 Android 16 之前,應用程式處於使用中待命值區時,並沒有執行限制。
影響資源限制的 Android 行為變更
以下 Android 更新會對應用程式資源限制進行變更。
Android 16
Android 已根據下列因素調整一般和快速工作執行的執行時間配額:
- 應用程式位於哪個應用程式待命值區
- 如果工作在應用程式處於頂層狀態時開始執行
- 如果工作在執行前景服務時執行
Android 13
高優先順序 Firebase 雲端通訊 (FCM) 配額行為異動
- 應用程式待命值區不再決定應用程式可使用的高優先順序 FCM 數量。
- 如果系統偵測到應用程式持續傳送不會產生通知的高優先順序訊息,現在會將這些訊息降級
- 如需高優先順序訊息的現行指南,請參閱 firebase 說明文件,瞭解如何設定及管理訊息優先順序。
Android 9
Android 9 推出了新的電池管理功能:應用程式待命值區。應用程式待命值區會根據應用程式的使用時間和使用頻率,協助應用程式優先處理資源要求。系統會根據應用程式使用模式,將應用程式排入五個優先順序值區的其中一個。系統會根據應用程式所在的值區,限制每個應用程式可用的裝置資源。