Android6.0引入了下列特性來延長電池使用時間:
* App Standby(應用待機)。系統可以將未使用的應用置為AppStandby模式,臨時限制這些應用的網絡訪問,延遲同步和后臺job
* Doze(瞌睡)。如果用戶在某個時間期限內未主動使用設備(屏幕關閉、設備靜止),平臺將進入深度睡眠狀態。因為該特性要求平臺檢測靜止狀態,因此只有那些在Sensor HAL中實現了顯式移動檢測API的設備中才有效。
* Exemptions(豁免)。預裝在設備上的系統應用和云消息服務,默認通常被豁免。應用開發者可以要求其應用使用這種設定。用戶也可以在設置中來豁免某些應用。
## AppStandby
對于不常用的應用的,AppStandby通過延遲后臺網絡活動和任務來延長電池壽命。
### 生命周期
**檢測**:當設備不在充電時,且在某個特定時鐘期限內和亮屏時長中,用戶沒有直接或者間接啟動該應用。間接啟動指的是:前臺應用訪問另外某個應用的service。
**App Standy模式中**:平臺限制應用一天內最多訪問一次網絡,延遲其同步和其他后臺任務。
**退出**:當應用被激活,或者設備充電時,平臺將該應用移出App Standby狀態。
活動的應用不受AppStandby的影響。活動的含義是:
* 進程處于前臺(Activity 或者 前臺服務,或者 由另外一個Activity 或 前臺服務所使用),例如 notification listener,輔助服務,live 墻紙,等等
* 供用戶查看的通知,可以是鎖屏通知或者通知圖標。
* 用戶顯式啟動的應用。
## Doze
支持Doze功能的要求:
* 設備在Sensor HAL實現了significant motion detector (SMD) APIs 。
* 設備有某個云消息服務,如 Google Cloud Messaging (GCM)。這使得設備可以知道何時從Doze中喚醒。
### 生命周期
**檢測**:當未在充電時,且當設備靜止且滅屏了一段時間。
**Doze期間**: 平臺嘗試讓系統處于休眠狀態,周期性地進入在一個維持窗口恢復正常操作,然后進入更長的休眠狀態。在休眠狀態:
* 禁止網絡訪問
* 忽略 wakelock
* 延遲鬧鐘,除了鬧鈴 和使用setAndAllowWhileIdle()設置的鬧鐘,以榮喜日歷等應用顯示事件提醒
* 停止WIFI掃描
* 同步和后臺任務被推遲到下一個維護窗口。
* 接收短信和MMS消息的應用位于一個臨時白名單,這樣他們可以完成其工作。
**退出**:
* 用戶交互
* 設備移動
* 亮屏
* 鬧鈴
### 集成Doze
1. 確認設備支持 SENSOR_TYPE_SIGNIFICANT_MOTION .
2. 確認設備安裝了一種云消息服務。????
3. 在配置文件overlay/frameworks/base/core/res/res/values/config.xml中,修改:bool name=”config_enableAutoPowerModes”>true
4. 檢查裝應用和服務:?
1. Use the new power-saving optimization guidelines. For details, see Testing and optimizing applications.
2. OR,Are exempted from Doze and App Standby. For details, see Exempting applications.
5. 確認必要的服務從Doze中豁免。
## 豁免應用
你可以在設置中,手動將某些應用從Doze和AppStandby中排除。