為了延長裝置電池續航力,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 版
會自動選擇適當的打盹最佳化機制和供應商
就不需要另外設定
如要啟用裝置的「打盹」功能,請按照下列步驟操作:
- 確認裝置已安裝雲端通訊服務。
- 在裝置疊加設定檔中
overlay/frameworks/base/core/res/res/values/config.xml
,已設定config_enableAutoPowerModes
到true
: 敬上 在 Android 開放原始碼計畫中,這個參數會預設為<bool name="config_enableAutoPowerModes">true</bool>
false
(停用打盹功能)。
- 確認預先載入的應用程式和服務:
- 使用
省電
最佳化指南。詳情請參閱「測試和
最佳化應用程式。
或
- 不受打盹和應用程式待命功能限制。詳情請參閱 豁免應用程式。
- 使用
省電
最佳化指南。詳情請參閱「測試和
最佳化應用程式。
- 確認必要服務免除打盹功能。
提示
- 如果可以,請將 FCM 用於 下游 傳送訊息
- 如果使用者必須立即看到通知,請使用 FCM 高優先順序郵件:
- 在一開始的 訊息 酬載 (避免不必要的後續網路存取)。
- 透過以下應用程式設定重要鬧鐘:
setAndAllowWhileIdle()
敬上 和setExactAndAllowWhileIdle()
。
測試及最佳化應用程式
在打盹模式下測試所有應用程式 (尤其是預先載入的應用程式)。詳情請參閱 測試 與「打盹和應用程式待命」功能搭配使用。