PhoneWindowManager().interceptKeyBeforeQueueing()中的interactive變數值的來源
阿新 • • 發佈:2018-12-10
這個值的來源是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設定。