Android 14 中 PowerManagerService 从深度休眠(Deep Sleep)进入浅休眠(如 Doze 模式)状态的详细分析

💡 基础概念:Wakefulness 状态

PowerManagerService 使用内部变量 mWakefulness 来标识系统当前的“唤醒状态”,主要包括以下几种:

  • WAKEFULNESS_AWAKE (1):完全唤醒,屏幕亮,设备可交互

  • WAKEFULNESS_DREAMING (2):梦境模式,屏幕可能亮但不可交互(如屏保)

  • WAKEFULNESS_DOZING (3):打瞌睡(Doze),设备进入轻度休眠,屏幕可能是熄灭状态或仅显示 AoD(Always on Display)

  • WAKEFULNESS_ASLEEP (0):深度休眠,CPU 允许完全挂起,设备无法交互

Doze 模式就是通过 WAKEFULNESS_DOZING 表示的浅层休眠状态,系统仍可进行部分后台任务或显示 AoD 内容。


🔁 状态切换流程(从深度睡眠 → 浅睡眠)

一般由以下两种情况触发浅睡眠:

场景一:屏幕关闭,进入 Doze 浅睡眠(不是立刻深睡)

流程梳理:
  1. 用户按电源键或屏幕超时
    PhoneWindowManager 调用 PowerManager.goToSleep()
    → 进入 PowerManagerService.goToSleepInternal()

  2. 进入 doze 状态
    → 调用 goToSleepNoUpdateLocked() 方法时,如果没有传入 GO_TO_SL

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你好,工程师

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

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

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

打赏作者

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

抵扣说明:

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

余额充值