当前位置: 首页 > web >正文

AOSP的Doze模式-LightIdle初识

前言

从Android 6.0开始,谷歌引入了Doze模式(打盹模式)的省电技术延长电池使用时间。根据第三方测试显示,两台同样的Nexus 5,开启的Doze的一台待机能达到533小时,而未开启Doze的一台待机只能达到200小时。Doze省电效果十分明显。

Doze省电技术原理

Doze模式细分light idle和deep idle,本文主要介绍light idle

操作

低电耗模式-deep idle

轻度低电耗模式-light idle

触发器

屏幕关闭、电池供电(未插电)、静止

屏幕关闭、电池供电(未插电)

计时

随维护时段依次增加

随维护时段反复持续 N 分钟

限制

无法访问网络、唤醒锁定和 GPS/WLAN 扫描;闹钟和作业/同步被延迟

无法访问网络;作业/同步被延迟(维护窗口除外)

行为

仅接收优先级较高的推送通知消息

接收所有实时消息(即时消息、致电等);优先级较高的推送通知消息可以暂时访问网络

退出

动作、屏幕开启或闹钟响铃

屏幕开启

Doze技术原理主要分为Doze状态机+省电管控(后台 CPU 和网络活动)措施,延长待机续航的效果。

其中状态机的目的主要识别用户长时间未使用设备场景并标记Idle状态,省电管控措施主要是Idle状态内限制应用后台 CPU 和网络活动

Light idle 状态机时序图

0

从上述状态流转图来看,正常情况(手机有网络)下最快16mins进入light idle模式,每隔5mins进入1min的维护窗口期。

Light idle 状态机流转图

0

Light Idle 状态机状态转换表

状态 (State)

进入条件 (Entry Conditions)

触发方法/逻辑

LIGHT_STATE_ACTIVE

屏幕开启 OR 正在充电 OR 即将触发闹钟 OR 有紧急呼叫活跃。

初始状态,通过 becomeActiveLocked() 激活。

LIGHT_STATE_INACTIVE

屏幕关闭 AND 未充电 AND 无紧急呼叫。

从 LIGHT_STATE_ACTIVE 通过 becomeInactiveIfAppropriateLocked() 进入。

LIGHT_STATE_IDLE

设备空闲一段时间(无用户交互或运动)。

从 LIGHT_STATE_INACTIVE 通过超时(some time transpires)自动进入。

LIGHT_STATE_WAITING_FOR_NETWORK

从 LIGHT_STATE_IDLE 退出时,检测到无网络连接。

从 LIGHT_STATE_IDLE 通过条件分支(no network)进入。

LIGHT_STATE_IDLE_MAINTENANCE

空闲维护窗口(短暂唤醒以执行任务)。

从 LIGHT_STATE_IDLE 或 LIGHT_STATE_WAITING_FOR_NETWORK 通过默认转换进入。

LIGHT_STATE_OVERRIDE

设备进入 Deep Idle 的 STATE_IDLE 状态,Light Idle 状态机被冻结。

由 Deep Idle 状态机触发(deep goes to STATE_IDLE)。

相对Light Idle我更关注Doze的Deep Idle,目前大部分友商主要是对deep idle进行深度定制。

http://www.xdnf.cn/news/526.html

相关文章:

  • 企业级RAG选择难题:数据方案的关键博弈
  • Mysql从入门到上手(一)-Mysql安装和Navicat安装及使用.
  • 【Python标准库】数学相关的9个标准库
  • 基于模态关系理解的无人机视觉语言导航模型
  • 解决Ubuntu图形化界面操作适配问题
  • CRT(阴极射线管)终端控制器
  • rebase和merge的区别
  • 【FreeRTOS进阶】优先级翻转现象详解及解决方案
  • MLLMs for TSAD ?
  • 代码审计入门 原生态sql注入篇
  • 如何对docker镜像存在的gosu安全漏洞进行修复——筑梦之路
  • LeetCode 热题 100:回溯
  • 两阶段快速立体匹配算法总结(TSSM)
  • 【综述】一文读懂卷积神经网络(CNN)
  • 【LLaMAFactory】LoRa + 魔搭 微调大模型实战
  • 机器学习(1)— 开发环境安装
  • 【工控基础】工业相机设置中,增益和数字增益有什么区别?
  • Codex CLI - 自然语言命令行界面
  • 自动化测试相关协议深度剖析及A2A、MCP协议自动化测试应用展望
  • 页内碎片和页外碎片的区别
  • 从零开始学编程:如何高效入门并掌握开发技能?
  • 将 DeepSeek 集成到 Spring Boot 项目实现通过 AI 对话方式操作后台数据
  • 【进程信号】五、信号集操作接口详解
  • Java 枚举(enum)
  • 多模态大语言模型arxiv论文略读(二十八)
  • Java 静态变量、静态方法及工具类介绍
  • 六边形棋盘格(Hexagonal Grids)的坐标
  • Git 命令速查手册
  • 每日一记:CRT和图论
  • 分布式系统核心原理