PhoneWindowManager初始化
wms::wms
wms::initPolicy
UiThread::Handler::runWithScissors
PhoneWindowManager::init
interceptKeyBeforeQueueing 調用棧
InputDispatcher::injectInputEvent // 觸發調用1
InputDispatcher::notifyKey // 觸發調用2
com_android_server_input_InputManagerService::NativeInputManager::interceptKeyBeforeQueueing
IMS::WindowManagerCallbacks::interceptKeyBeforeQueueing // InputMontor是WindowManagerCallbacks的實現類
InputMontor::interceptKeyBeforeQueueing
WMS::PhoneWindowManager::interceptKeyBeforeQueueing
interceptKeyBeforeDispatching調用棧
InputDispatcher::dispatchOnce
InputDispatcher::dispatchOnceInnerLocked(
//InputDispatcher::mPolicy // mPolicy:: com_android_server_input_InputManagerService.cpp
InputDispatcher::dispatchKeyLocked
InputDispatcher::doInterceptKeyBeforeDispatchingLockedInterruptible
com_android_server_input_InputManagerService::NativeInputManager::interceptKeyBeforeDispatching
// jni InputManagerService::nativeInit中初始化
IMS::WindowManagerCallbacks::interceptKeyBeforeDispatching // InputMontor是WindowManagerCallbacks的實現類
InputMontor::interceptKeyBeforeDispatching
WMS::PhoneWindowManager::interceptKeyBeforeDispatching
PhoneWindowManager 相關類圖
PhoneWindowManager.png
- InputMonitor 實現IMS::WindowManagerCallbacks接口,并且持有WMS引用;
- WMS持有WindowManagerPolicy接口的實現類PhoneWindowManager;
- PhoneWindowManager的內部類PolicyHandler分發業務邏輯;
- PhoneWindowManager的初始化在android.ui 線程;