電源管理資源限制

系統會根據裝置狀態、應用程式狀態和應用程式待命值區,為應用程式資源要求設定優先順序。

Android 系統可透過兩種方式強制執行資源限制。如要最佳化資源使用率,一種方法是延後執行工作,直到裝置離開低耗電裝置狀態 (例如打盹模式) 為止。舉例來說,系統會延遲執行一般工作和不精確的鬧鐘,等裝置離開休眠模式後再執行。

另一種方法是根據應用程式目前的待命值區,減少應用程式喚醒裝置和執行工作的次數。系統可以減少頻率 (應用程式喚醒裝置的頻率) 和總持續時間 (裝置保持喚醒的時間長度)。舉例來說,如果應用程式位於「很少使用」待機值區,則可在 24 小時的滾動期間內,執行總計 10 分鐘的排定工作。

請注意,當應用程式處於不可見狀態,且工作資源限制會影響 worker 時,WorkManager 會使用 JobScheduler 安排工作。

如要進一步瞭解限制條件,請參閱:

  1. 根據裝置狀態設定的資源限制
  2. 根據應用程式狀態設定的資源限制
  3. 根據應用程式待命值區設定的資源限制

請注意,裝置狀態和應用程式狀態可取代應用程式待機值區限制。舉例來說,如果裝置正在充電,系統會允許很少使用待命值區中的應用程式在 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

JobScheduler 配額最佳化行為變更

Android 已根據下列因素調整一般和快速工作執行的執行時間配額:

  1. 應用程式位於哪個應用程式待命值區
  2. 如果工作在應用程式處於頂層狀態時開始執行
  3. 如果工作在執行前景服務時執行

Android 13

高優先順序 Firebase 雲端通訊 (FCM) 配額行為異動

Android 9

推出應用程式待命值區功能

Android 9 推出了新的電池管理功能:應用程式待命值區。應用程式待命值區會根據應用程式的使用時間和使用頻率,協助應用程式優先處理資源要求。系統會根據應用程式使用模式,將應用程式排入五個優先順序值區的其中一個。系統會根據應用程式所在的值區,限制每個應用程式可用的裝置資源。