PhoneWindowManager().interceptKeyBeforeQueueing()中的interactive变量值的来源

这个值的来源是powerManager设置的。对应于PowerManagerService.java的mWakeFulness的WAKEFULLNESS_AWAKE和WAKEFULLNESS_DREAMING.

WAKEFULNESS_ASLEEP:表示系统当前处于休眠状态,只能被wakeUp()调用唤醒。

WAKEFULNESS_AWAKE:表示系统目前处于正常运行状态。

WAKEFULNESS_DREAMING:表示系统当前正处于屏保的状态。

WAKEFULNESS_DOZING:表示系统正处于“doze”状态。

我们流程反着看吧。

PhoneWindowManager.java的interceptKeyBeforQueuing的policyFlags参数,决定了interactive。

PhoneWindowManager.java的interceptKeyBeforQueuing怎么掉过来呢?

是从native C++层的nativeInputManager-》interceptKeyBeforQueuing传过来。

nativeInputManager的mInterctive变量使policyFlags的POLICY_FLAG_INTERACTIVE置位。

mInterctive是InputManagerService.java中的扩展InputManagerInternal的LocalSerivce类通过jni调用SetInteractive设置。

InputManagerSerivice将LocalService添加到本地服务。

然后PM模块的notifier在onWakefulnessChangedStarted()中,调用获取到的InputManagerInternal的setInteractive

.就这样PM模块修改了nativeInputManager的mInteractive。

Notifier的作用就是广播重要的PowerManager 状态变化。

PowerManagerService在做相关操作时会调用Notifier通知系统和应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值