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中排除。