使用 Doze 管理平台電源

為了延長裝置電池續航力,Android 可能會透過下列方式影響裝置狀態: 監控裝置的使用情況和喚醒情況。平台可以輸入 休眠,讓系統在裝置閒置時暫停跑步活動。

關於打盹

打盹功能會延後應用程式背景 CPU 和 裝置長時間未使用時的網路活動。

處於打盹模式中的閒置裝置會定期進入維護期間。 應用程式可以完成待處理作業 (同步處理、工作等)。打盹再繼續 很長一段時間,之後另一個維護期間 持續進入休眠/維護序列,增加 每次閒置,直到達到數小時的睡眠時間為止。完全 操作時,使用「打盹」模式的裝置仍然能夠得知動作並立即退出「打盹」模式 。

Android 7.0 以上版本擴充了「打盹」功能,觸發一系列精簡最佳化作業 每次使用者關閉裝置螢幕時,即使他們繼續執行。 裝置移動,電池續航力更持久

重要系統服務通常是由裝置製造商將 免除打盹。使用者也可以透過 「設定」選單。但將應用程式設為排除後,可能會導致裝置電力耗盡。 根據預設,Android 開放原始碼計畫會停用打盹功能。的 如要進一步瞭解如何啟用打盹功能,請參閱「整合打盹」一文。

打盹規定

支援打盹功能需要裝置具備雲端通訊服務,例如 Firebase 雲端通訊 (FCM)。外部觸發事件,例如雲端訊息 可能會暫時喚醒應用程式,讓裝置保持打盹模式。

如需完全打盹功能, 明顯 裝置上的動作偵測器 (SMD)但基本的打盹模式 Android 7.0 以上版本不需要 SMD。如果裝置已啟用打盹功能 顯示:

  • 執行 SMD 完整的打盹最佳化功能 (包括輕量級) 最佳化)。
  • 沒有 SMD,系統只會採用輕量的打盹最佳化功能。

打盹生命週期

平台偵測到裝置處於閒置狀態時啟動打盹功能 在發生一或多個離開事件活動時結束。

如果發生下列情況,平台會偵測到裝置處於閒置狀態:

  • 裝置處於靜止狀態 (使用 SMD)。
  • 裝置螢幕已關閉一段時間。

電池供電的裝置已接上充電器時,無法使用打盹模式。

打盹期間

平台會定期嘗試讓系統維持在睡眠狀態 在維護期間恢復正常作業,然後退回裝置 睡眠時間較長睡眠期間: 限制已啟用:

  • 應用程式不得存取網路。
  • 已忽略應用程式 Wake Lock。
  • 鬧鐘已延後。不含使用 setAndAllowWhileIdle() (每個應用程式每 15 分鐘限制為 1 次 。這項豁免資格適用於必須顯示 Google 日曆的應用程式 (例如 Google 日曆) 活動提醒通知。
  • 不會掃描 Wi-Fi。
  • 已延後 SyncAdapter 項同步處理作業和 JobScheduler 項工作 直到下一個維護期間
  • 系統會將接收簡訊和多媒體訊息的應用程式加入臨時許可清單,以便 就能完成處理程序

結束

平台偵測到以下情形時,就會將裝置退出打盹模式:

  • 使用者與裝置的互動
  • 裝置移動
  • 開啟裝置螢幕
  • 即將響起的鬧鐘鬧鐘

裝置出現通知時,不會導致裝置退出打盹模式。

Android 7.0 以上版本啟用輕量睡眠模式,擴展打盹功能 關閉期間,直到裝置處於閒置狀態。

圖 1. 非靜止器和靜止裝置的打盹模式。

動作 打盹 輕量打盹
觸發 螢幕已關閉, 電池已開啟, 靜止 螢幕已關閉,在使用電池時 (拔除電源)
時間 維護期間逐步增加 重複 N 分鐘的維護期間
限制 無法存取網路、Wake Lock 或 GPS/Wi-Fi 掃描鬧鐘和工作/同步處理 延遲 沒有網路存取權;已延後工作/同步處理作業 (維護期間除外)
行為 僅收到高優先順序的推播通知訊息 所有收到的即時訊息 (即時訊息、通話等); 高優先順序推播通知訊息會授予暫時網路存取權
結束 動作、螢幕或鬧鐘鬧鐘 螢幕開啟

與應用程式待命互動

  • 使用打盹功能不會計入應用程式待命。
  • 當裝置處於打盹模式時,閒置應用程式可正常運作 每天至少執行一次作業

整合打盹功能

啟用打盹功能後,凡是支援「打盹」功能的裝置 SENSOR_TYPE_SIGNIFICANT_MOTION敬上 執行完整的打盹最佳化功能 (包括輕量最佳化); 未搭載 SMD 的裝置只會執行輕量打盹最佳化功能。Android 版 會自動選擇適當的打盹最佳化機制和供應商 就不需要另外設定

如要啟用裝置的「打盹」功能,請按照下列步驟操作:

  1. 確認裝置已安裝雲端通訊服務。
  2. 在裝置疊加設定檔中 overlay/frameworks/base/core/res/res/values/config.xml,已設定 config_enableAutoPowerModestrue
    <bool name="config_enableAutoPowerModes">true</bool>
    
    在 Android 開放原始碼計畫中,這個參數會預設為 false (停用打盹功能)。
  3. 確認預先載入的應用程式和服務:
  4. 確認必要服務免除打盹功能。

提示

測試及最佳化應用程式

在打盹模式下測試所有應用程式 (尤其是預先載入的應用程式)。詳情請參閱 測試 與「打盹和應用程式待命」功能搭配使用