Android大话省电管理之Doze

安卓Doze

安卓 Doze 是 Android 6.0(API 23)引入的一种电池优化机制。

工作原理

  1. 进入条件
    当设备屏幕关闭,不充电,且在 Android 6.0 中设备静止 30 分钟后,进入Deep Doze模式。
    在 Android 7.0 及以上版本中设备即使有轻微移动,只要屏幕关闭且不充电一段时间后,便会进入 Light Doze模式,持续一段时间后进入Deep Doze。
  2. 限制措施
    进入 Doze 模式后,系统会对应用和部分系统功能进行限制,包括暂停网络访问、忽略唤醒锁、推迟 AlarmManager 闹钟、禁止 Wi-Fi/GPS 扫描、不允许同步适配器和 JobScheduler 运行等.
  3. 维护窗口
    每隔一段时间,系统会进入一个时长约为 30 秒的维护窗口(maintenance window),在这个窗口期内,应用可以唤醒系统,进行网络交互等操作,完成被推迟的任务.

如图,设备会先进入Doze Light(轻度模式),然后被Doze(深度模式)覆盖
在这里插入图片描述

Deep Doze的各种状态

在这里插入图片描述

  1. 手机设备处于激活活动状态 ACTIVE
  2. 屏幕关闭且不充电即进入非活动INACTIVE状态
  3. INACTIVE状态30分钟后让App进入IDLE_PENDING。
  4. IDLE_PENDING状态下使用Significant Motion Detector检测设备是否发生显著运动(利用加速度传感器),30分钟无运动则进入SENSING(传感检测)状态。
  5. SENSING,根据运动、光线、距离等传感器判断设备是否静止,默认是4分钟,传感检测设备没有运动就切到 LOCATION 状态。
  6. LOCATION状态经过 30s 的网络及GPS定位检测之后进入 Doze 的核心状态 IDLE。
  7. IDLE每隔一段时间会进入IDLE_MAINTENANCE处理挂起任务然后再回到IDLE状态,这个间隔会不断加大,第一次是1小时,然后加大为2小时,这样按小时递增,最后稳定为最大的6小时。

Light Doze的状态

在这里插入图片描述

  1. 手机设备处于激活活动状态 ACTIVE
  2. 屏幕关闭且不充电即进入非活动INACTIVE状态
  3. 3分钟后进入PRE_IDLE
  4. PRE_IDLE后进入IDLE状态
  5. IDLE状态时会判断有没网络,没有则进入WAITING_FOR_NETWORK,5分钟后回到IDLE,有网则间隔5, 10, 15分钟递增最大保持在15分钟后进入IDLE_MAINTENANCE状态1分钟后回到IDLE。

不同版本的特点

  1. Android 6.0 的 Doze 模式
    设备不插电源充电,保持静止,且关闭屏幕一段时间后进入 Doze 模式,系统会禁止应用访问网络,延迟应用的后台作业、同步、闹钟等.
  2. Android 7.0 增强 Doze 模式
    分为浅度 Doze(Light IDLE)和深度 Doze(Deep IDLE)两个阶段。浅度 Doze 阶段,设备不充电,屏幕关闭即可进入,应用不能访问网络、推迟作业和同步;
    深度 Doze 阶段,设备需在不充电、屏幕关闭且保持静止一段时间后进入,此阶段除了浅度 Doze 的限制外,唤醒锁失效,禁止 GPS/WIFI 扫描,闹钟等也会被推迟.

不同版本安卓默认开启情况

  1. 安卓 6.0 - 安卓 12:Doze 功能默认是开启的。当设备未连接电源、处于静止状态一段时间且屏幕关闭时,设备就会自动进入 Doze 模式,系统会通过限制应用对网络的访问以及对 CPU 的使用等来节省电量.
  2. 安卓 13:Doze 模式默认是关闭的

影响

安卓 Doze 模式会对以下方面进行限制:

Light Doze影响

  1. 网络访问限制
  2. 后台任务推迟(Jobs 和 Syncs 等后台任务会被推迟执行)

Deep Doze影响

  1. 网络访问
    应用的网络访问会受到限制,仅在维护窗口期间才允许联网,非维护窗口时段,应用无法主动进行网络请求,以减少网络数据传输,节省电量.
  2. 后台任务
    大部分后台任务、定时器和同步操作会被暂停,比如常规的后台数据更新、定时任务等,都将推迟到维护窗口执行,避免后台任务频繁唤醒设备导致电量消耗.
  3. Wake Locks
    大多数 Wake Locks 会被系统无视,防止应用长时间阻止设备进入低功耗状态,确保设备能够进入休眠以节省电量.
  4. AlarmManager 闹钟
    除了使用setAndAllowWhileIdle
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅得不敢出门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值