WMS:系统窗口添加过程
- 1、经常使用的两大类窗口
- 2、系统窗口StatusBar
- 2.1 StatusBarWindowView添加流程
- 2.2 简要时序图
android12-release
1、经常使用的两大类窗口
Android中的“窗口”类型有很多,经常使用的“窗口”大致分为两大类:一是,由系统进程管理的
“系统窗口”
;二是,由应用程序产生的“应员窗口”
“系统窗口”:如SystemUI
“应员窗口”:这个就是安装Activity中添加,查看 Activity的预览窗口StartingWindow添加、Activity窗口的添加过程
2、系统窗口StatusBar
2.1 StatusBarWindowView添加流程
startSystemUi(context, windowManagerF)
系统服务启动完成执行t.traceBegin("StartSystemUI"); try { startSystemUi(context, windowManagerF); } catch (Throwable e) { reportWtf("starting System UI", e); } t.traceEnd();
- 启动服务
com.android.systemui/com.android.systemui.SystemUIService
- SystemUI中
SystemUIApplication#startServicesIfNeeded()
启动所有相关SystemUI
- 启动
com.android.systemui.statusbar.phone.StatusBar
执行start()
时,在createAndAddWindows(result)
中mStatusBarWindowController.attach()
添加mWindowManager.addView(mStatusBarView, mLp)
- 最终调用到
WindowManagerService.java#addWindow
;同 Activity窗口的添加过程、Activity的预览窗口StartingWindow添加
(WindowManagerImpl.java#addView -> WindowManagerGlobal.java#addView -> ViewRootImpl.java#setView -> Session extends IWindowSession.Stub#addToDisplayAsUser -> WindowManagerService.java#addWindow
)