Android的Doze模式

article/2025/9/14 17:19:15

也是偶然之间听到这个词的 Doze模式 Doze模式
Doze 翻译为打盹, 那么Android的Doze模式呢 , 就是让手机进入了类似打盹的一个状态 , 在这个半梦半醒的状态下 , 手机的后台、服务、广播等都会发生相应的延迟。
Doze模式在Android M(6.0)时引入,定义了一种新的低功耗状态。

1. Doze的状态

若判断用户在连续的一段时间内没有使用手机,就延缓终端中APP后台的CPU和网络活动,以达到减少电量消耗的目的。注意,这里只是延缓并没有杀死进程。
上一张图来解释一下这个状态吧(这张图是偷的)

Doze模式

 

横轴为时间轴,纵轴代表运行的状态,红色为活跃,绿色为休眠

从(0,0)点开始,我们可以看到一直是红色的运行状态,这时候手机的状态保持一段时间后就进入了Doze状态:

  1. Screen off 屏幕熄灭
  2. Stationary 手机静止 , 即不发生位移
  3. On Battery 使用电池供电
    当处于上述三种状态一段时间后即进入了Doze模式,这时所有的活动都暂时被停止,只有在maintenance window时才会继续运行一小段时间随后又继续Doze , 这个maintenance window就是Doze模式中让系统继续运行的一个状态 , 这个状态自动定时进入.

这样, 手机就可以在保留了活动的情况下,达到了省电的目的.
一旦不满足上述的三种条件时,立即退出Doze模式

Doze模式中发生了什么

Doze并没有杀死进程

1、暂停网络访问。
2、系统忽略所有的WakeLock。
3、标准的AlarmManager alarms被延缓到下一个maintenance window。
但使用AlarmManager的 setAndAllowWhileIdle、setExactAndAllowWhileIdle和setAlarmClock时,alarms定义事件仍会启动。
在这些alarms启动前,系统会短暂地退出Doze模式。
4、系统不再进行WiFi扫描。
5、系统不允许sync adapters运行。
6、系统不允许JobScheduler运行

逃脱Doze模式

Android6.0及更高版本还提供了Doze模式白名单列表,通过设置应用程序进入白名单列表, 引导用户设置白名单, 可逃脱Doze模式的各种限制。

  1. 检测应用程序是否存在白名单list里面,可使用PowerManager的isIgnoringBatteryOptimizations()方法。
  2. 引导到电池优化界面,让用户去管理白名单
Intent i = new Intent();
i.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
startActivity(i);  

在DeviceIdle中有三中类型的白名单列表:

  1. Doze模式下被限制的系统级App: mPowerSaveWhitelistAppsExceptIdle
  2. 所有模式下(Doze和app standby)被限制的系统级App mPowerSaveWhitelistApps
  3. 所有模式下被限制的用户级App: mPowerSaveWhitelistUserApps



作者:MinuitZ
链接:https://www.jianshu.com/p/d39ac63b445b
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。


http://chatgpt.dhexx.cn/article/Q6oAqJ3I.shtml

相关文章

Android---Alarm定时任务 Doze模式

Android的定时任务有两种,一种是JavaAPI提供的Timer类,另一种就是使用Android的Alarm机制。 Timer不太适合那些需要长期在后台运行的定时任务,因为每个手机都有自己的休眠策略,Android手机长时间不操作就会导致Timer定时任务无法…

Android 8.1 Doze模式分析(三)——Deep Doze模式

概述 Deep Doze,也就是Android的Doze模式了,表示深度Doze,比起LightDoze,它将进行更多的限制:无法进行网络访问和 GPS/WLAN 扫描、唤醒被忽略、闹钟和作业/同步被延迟。当然,它的触发条件也将更加苛刻&…

Android7.0 Doze模式

在Android M中,Google就引入了Doze模式。它定义了一种全新的、低能耗的状态。 在该状态,后台只有部分任务被允许运行,其它任务都被强制停止。 本篇博客中,我们就来分析一下Android 7.0中Doze模式相关的流程。 一、基本原理 Do…

Android Doze模式和app Standby模式

对低电耗模式(app Standby)和应用待机模式(Doze)进行针对性优化 从 Android 6.0(API 级别 23)开始,Android 引入了两个省电功能,可通过管理应用在设备未连接至电源时的行为方式为用户延长电池寿命。低电耗模式通过在设备长时间处…

adb shell dumpsys deviceidle whitelist 打盹模式(Doze)白名单

Android 6.0开始引入了打盹模式(Doze),若想使自己的App不受打盹模式的影响(推迟Alarm唤起时间、限制CPU调用、限制网络请求等),需终端手机厂商为该App添加这个白名单。 Android developer 针对低电耗模式和应用待机模式进行优化&…

Android 8.1 Doze模式分析(二)——Light Doze模式

概述 LightDoze表示轻度doze模式,如果设备处于未充电且屏幕关闭状态,但未处于静止状态时,就会进入Light Doze模式,在LightDoze模式中,会定期进行维护,这种维护会持续N分钟,在维护状态(maintena…

Doze模式时序调研

Doze模式 机型 Light idle Deep idle 时序 定制白名单 AppStandby BLE Scanning管控 华为P20 Pro 开启 64.5分钟进入deep idle 有 开启 禁止BLE scanning OPPO F11 Pro 开启 30分钟进入deep idle 有 开启 允许BLE scanning 小米 MI 8 Pro 开启 64.5分钟进入…

Android7.0 Doze模式分析(一)Doze介绍 DeviceIdleController

参考:http://blog.csdn.net/gaugamela/article/details/52981984 在Android M中,Google就引入了Doze模式。它定义了一种全新的、低能耗的状态。 在该状态,后台只有部分任务被允许运行,其它任务都被强制停止。 在之前的博客中分…

android 7.0低电耗Doze模式

从 Android 6.0(API 级别 23)开始,Android 引入了两个省电功能,可通过管理应用在设备未连接至电源时的行为方式为用户延长电池寿命。 低电耗(Doze)模式通过在设备长时间处于闲置状态时推迟应用的后台 CPU 和网络 Activity 来减少电…

Android O Doze模式的状态

现象 以下是BugReport日志 日志 STATE_ACTIVE 2,006: 11-17 10:24:59.876137 900 900 I DeviceIdleController: updateChargingLocked: chargingtrue 2,007: 11-17 10:24:59.876244 900 900 I DeviceIdleController: becomeActiveLocked, reason charging 2,25…

【Android】Doze模式识别与检测

从 Android 6.0(API 级别 23)开始,Android 引入了两个省电功能:Doze模式(官方翻译为低电耗模式)和 App Standby模式(官方翻译为应用待机模式),可通过管理应用在设备未连接…

Android 8.1 Doze模式分析(一)——Doze简介和DeviceIdleController的启动

概述 Doze模式,官方翻译为低电耗模式,是Andoriod6.0增加的一项系统服务,主要目的是为了优化电池性能,增加电池续航时间,Doze模式又分两种模式:深度Doze模式(Deep Doze)和轻度Doze模式(Light Doze)&#xf…

Android 6.0的省电技术Doze作用影响以及避免方法

从android 6.0开始,谷歌引入了两项新的省电技术延长电池使用时间,分别是Doze(休眠)和App Standby(app待命模式),只要app是运行在6.0(api 23)及以上的系统,无论…

Doze模式简介

Doze模式是自Android 6.0开始引入的两项省电功能的其中之一,还有一个就是appstandby,通过管理应用在设备未连接至电源时的行为方式,帮助用户延长电池寿命。当用户长时间未使用设备时,低电耗模式会延迟应用的后台 CPU 和网络活动&a…

Android中的Doze模式

概述 Android 6.0引入的Doze机制在于节省系统耗电量,保护电池,延长电池的使用时间。当设备未连接至电源,且长时间处于闲置状态时,系统会将应用进入Doze,置于App Standby模式。而最终的效果,能提升30%的电量…

Mock工具之Mockito实战

在实际项目中写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖项又会有依赖,导致在单元测试代码里几乎无法完成构建,尤其是当依赖项尚未构建完成时会导致单元测试无法进行。为了解决这类问题我们引入了Mock的概念,简…

Mockito 入门

目录 1.什么是 Mock 测试?2.Mockito简介3.在 SpringBoot 单元测试中使用 Mockito3.1 Maven依赖:3.2 UserService.java3.3 User.java3.4 thenReturn系列方法(测试桩)3.5 thenThrow系列方法3.6 verify 系列方法 4.Spring中mock任何容…

Mock工具之Moco使用教程

目录 一、什么是Moco二、安装&配置三、接口配置&测试3.1 第一个简单的请求:3.2 Get请求:3.3 Post请求:3.4 返回值为Json格式的请求:3.5 带cookie信息才能访问的post请求:3.6 重定向请求:3.7 前后端…

mock功能

目标 了解mock的作用及使用场景; mock使用场景 mock:假的 前端程序员提到的mock数据的含义是:真的假数据 真的:符合接口规范要求的。 假数据:数据是人为创建出来的,不是真正的业务数据。 什么时候需…

mock的介绍

1.什么是mock mock测试是以可控的方式模拟真实的对象行为。程序员通常创造模拟对象来测试对象本身该具备的行为,很类似汽车设计者使用碰撞测试假人来模拟车辆碰撞中人的动态行为 2.为什么要使用mock 之所以使用mock测试,是因为真实场景很难实现或者短…