系統會根據裝置狀態、應用程式狀態和應用程式待命值區,為應用程式資源要求設定優先順序。
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 推出了新的電池管理功能:應用程式待命值區。應用程式待命值區會根據應用程式的使用時間和使用頻率,協助應用程式優先處理資源要求。系統會根據應用程式使用模式,將應用程式排入五個優先順序值區的其中一個。系統會根據應用程式所在的值區,限制每個應用程式可用的裝置資源。
