💡 基础概念: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 浅睡眠(不是立刻深睡)
流程梳理:
-
用户按电源键或屏幕超时
→PhoneWindowManager调用PowerManager.goToSleep()
→ 进入PowerManagerService.goToSleepInternal() -
进入 doze 状态
→ 调用goToSleepNoUpdateLocked()方法时,如果没有传入GO_TO_SL

最低0.47元/天 解锁文章
6182

被折叠的 条评论
为什么被折叠?



