Window、WindowManager和WMS的关系

WindowManager的关联类

一个进程中只有一个WindowManagerGlobal,可能会有多个WindowManagerImpl
Window的属性
1.Window的类型和显示次序
Window分类及Type值:Application Window(1-99),Sub Window(1000-1999),System Window(2000-2999)
类型定义在WindowManager的静态内部类LayoutParams中。
WMS会为窗口确定显示次序。
一般情况下,Type值越大则Z-Order排序越靠前,就越靠近用户。
2.Window的标志
也就是Flag,用于控制Window的显示,同样定义在WindowManager的静态内部类LayoutParams中。
三种设置方式:
Window.addFlags()
Window.setFlags()
WindowManager.addView()
3.软键盘相关模式
AndroidManifest/Activity属性android:windowSoftInputMode
getWindow().setSoftInputMode()
Window的操作
- WindowManager处理部分,对于不同类型的窗口处理过程有所不同
- WMS处理部分,对于三大类窗口的处理基本一致
- 通过Session实现本地进程与WMS所在SystemServer进程的通信
- 负责显示界面的是Surface,而不是窗口本身。
- WMS将Surface交给SurfaceFlinger处理,SurfaceFlinger将这些Surface混合并绘制到屏幕上。