Doze 模式是 Android 系统自发的一种省电机制:
- 
在屏幕熄灭30分钟、没有晃动并且在不充电的时候,会进入Doze模式 
- 
在进入Doze模式后,每间隔一段时间,会进入一段时长为30s的 maintenance window 的窗口期,可以唤醒系统,进行网络交互等等 
- 
进入Doze模式后,如果没有退出的话,系统唤醒的间隔时长会越来越长 
 
 当系统处于Doze模式下,系统和白名单之外的应用将受到以下限制:
- 
无法访问网络 
- 
Wake Locks被忽略 
- 
AlarmManager闹铃会被推迟到下一个 maintenance window 响应 - 使用 setAndAllowWhileIdle 或 SetExactAndAllowWhileIdle 设置闹铃的闹钟则不会受到Doze模式的影响
- setAlarmClock 设置的闹铃在Doze模式下仍然生效,但系统会在闹铃生效前退出Doze
 
- 
系统不执行Wi-Fi/GPS扫描; 
- 
系统不允许同步适配器运行; 
- 
系统不允许JobScheduler运行; 
 
 App可以通过 PowerManager.isIgnoringBatteryOptimizations 检查本App是否在系统的白名单列表中。
 
 如果不在,则可以通过在 AndroidManifest.xml 中添加 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限,并且通过发送 ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS 的Intent来向用户申请该权限
 
版权声明:本文为lzs781原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
