1. 程式人生 > >PhoneWindowManager().interceptKeyBeforeQueueing()中的interactive變數值的來源

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通過jni呼叫nativeSetInteractive設定。