第2章 Android 电源状态机:亮屏/灭屏、休眠深度、充电状态对策略的影响

2.1 核心概念解释

Android 系统的电源管理核心是电源状态机,它将设备运行状态划分为有限个确定性阶段,每个阶段对应不同的功耗水平和系统可用性。状态转换由用户行为、系统超时、硬件中断或充电状态变化驱动。理解状态机是选择节电策略的基础。

  • 亮屏 (Screen On):用户主动操作或通知唤醒屏幕,CPU 保持最高活跃频率,网络、传感器、触控、渲染管线全开,典型功耗 300–800 mW。
  • 灭屏 (Screen Off):用户无操作超时后屏幕关闭,但系统可能仍处于浅度休眠,部分进程可运行,功耗骤降至 50–200 mW。
  • 休眠深度 (Doze / Suspend):系统根据空闲时长递增休眠深度,从浅度 Doze(冻结应用、限制网络)到深度 Suspend-to-RAM(CPU 挂起、内存自刷新),功耗可低至 2–10 mW。
  • 充电状态:连接充电器时,系统常放宽背景活动限制,允许更高频率执行任务,同时利用 AC 供电补充电池,策略上通常不主动降频。

2.2 电源状态机原理图解

下图展示了 Android 电源管理的五状态转换模型,箭头标注触发条件,底部说明框解释各核心状态对节电策略的影响。

Android 电源状态机 (五状态模型) 亮屏活跃 灭屏浅睡 深度睡眠 充电状态 唤醒/恢复 超时无操作 空闲超时 中断/闹钟 用户解锁/通知 插入充电器 灭屏后 🌐 状态策略影响 • 亮屏:允许高性能、络、定位;节电策略几乎不干预 • 灭屏浅睡:限制后台网络/定位,冻结非必要进程,降低 CPU 频率 • 深度睡眠:仅核心定时器运行,SoC 挂起,唤醒代价高

状态转换条件与策略影响可进一步归纳为下表:

当前状态 触发转换 目标状态 节电策略调整
亮屏活跃 超时灭屏 灭屏浅睡 停止屏幕渲染、进入Doze浅度
灭屏浅睡 持续空闲 深度睡眠 挂起CPU,进入Suspend-to-RAM
深度睡眠 硬件中断/闹钟 唤醒/恢复 恢复系统,可能触发亮屏
亮屏/灭屏 插入充电器 充电状态 放宽背景活动限制,关闭降频
充电状态 灭屏+空闲 灭屏浅睡/深度睡眠 仍可休眠,但充电时唤醒阈值降低

2.3 类比说明

把系统状态比作人的睡眠周期:

  • 亮屏活跃——清醒工作:眼睛睁着,大脑全速运转,随时响应。
  • 灭屏浅睡——闭眼打盹:表面安静,但大脑仍能听见周围声音,易唤醒。
  • 深度睡眠——熟睡:意识几乎关闭,只有呼吸和心跳,需要强力刺激才能醒。
  • 充电状态——吃饭补充能量:人体处于放松状态,可以继续消化吸收,但不会完全休息。
  • 唤醒/恢复——被闹钟叫醒:从熟睡快速过渡到清醒,往往需要几秒时间恢复。

2.4 常见误区辨析

  • 误区:灭屏 = 深度睡眠
    正确:灭屏后系统先进入浅度 Doze,再根据空闲时长递增深度。除非电量极低或强制休眠,否则不会立刻进入深度睡眠。
  • 误区:充电时系统不会休眠
    正确:充电状态下系统仍可进入浅睡或深度睡眠(比如夜间充电),但 Doze 深度和进入条件可能比电池供电时更宽松。
  • 误区:深度睡眠下所有硬件都断电
    正确:深度睡眠保留内存自刷新、RTC 时钟和少量唤醒控制器(如WiFi、蓝牙、Alarm),并非完全断电。

2.5 练习题

  1. 题目:当用户按下电源键关闭屏幕,且未触碰设备 30 分钟后,系统最可能处于哪个状态?

    A. 亮屏活跃   B. 灭屏浅睡   C. 深度睡眠   D. 充电状态

    ✅ 答案:C。30 分钟空闲已超过深度睡眠阈值(通常 5–15 分钟),系统进入 Suspend-to-RAM。
  2. 题目:以下哪种事件 不能 将系统从深度睡眠唤醒?

    A. 按电源键   B. 收到短信   C. 移动鼠标 (OTG)   D. 定时闹钟

    ✅ 答案:B。深度睡眠下 modem 通常关闭,短信不会产生唤醒中断;实际取决于硬件设计,一般情况下短信通过基带,但需要 RIL 唤醒。
  3. 题目:判断对错:充电时系统无法进入深度睡眠,因为充电需要保持 CPU 运行。

    ❌ 错误。充电状态只是放宽限制,系统仍可进入深度睡眠,充电器通过 PMIC 持续供电,CPU 可挂起。

2.6 应用边界

电源状态机在以下场景会受到制约,理解边界有助于合理设计节电策略:

  • 后台音频/音乐播放:系统会提升 wakelock 级别,阻止进入深度睡眠,即使灭屏也仅停留在浅度 Doze。
  • 传感器持续监听(计步器、接近传感器):硬件 Sensor Hub 允许深度睡眠下工作,但若应用频繁读取,会触发唤醒。
  • 低电量特殊策略:当电量低于 5% 时,部分厂商会强制跳过浅睡,直接深度关屏,缩短唤醒响应时间以保电。
  • 分屏/画中画:即使屏幕亮着,若窗口完全被覆盖(如画中画),系统可能将部分管道置入低功耗模式,但仍是亮屏状态。
  • 投影/投屏:外部显示设备场景下,主屏可关闭,但系统需保持解码渲染,实际状态介于亮屏浅睡之间。