美文网首页
window层级结果树

window层级结果树

作者: WangRain1 | 来源:发表于2023-07-05 17:49 被阅读0次

    系统启动的时候在systemserver中去创建wms,wms中回去创建所有屏幕管理容器RootWindowContainer,在rwc中回去创建对应的DisplayContent,

    DisplayContent代表了一个屏幕的虚拟管理类,每个Dc都会创建对应的DisplayPloicy对象,DP首先会去初始化Window的层级结构树,window总共

    分为0~36层,每一层都会挂载到对应的层级结构树上,比如0层就是壁纸window,1层是TaskDisplayArea主要挂载activity的窗口,一次往上会有

    navigationbar和statusbar的挂载层,一次Window就形成了一个Z-Order顺序;

    ViewRootImpl WMS

    1.

    setView();

    Session.addTODisplayAsUser() --> addWindow();

    1.校验type类型以及是否具有权限;

    2.为窗口创建对应的WindowToken,并把Token根据type类型把token添加到窗口层级树上

    activity的窗口被挂到TaskDisplayArea容器中;

    3.创建WindowState,并把WindowState添加进Token中去;

    4.通过对应的DisplayPloicy.addWindow() 过滤window类型是statusbar/navigationbar 等创建

    对应的Insets插图,为后续activty显示区域做计算使用;

    5.更新焦点window;

    2.

    relayout();

    Session.relayout(); --> relayoutWindow();

    1.WindowSurfacePlacer.performSurfacePlacer();会去RWC中遍历所有dc

    2.dc中遍历所有window,以树形结构从上到下遍历;

    3.到dp中通过WindowLayout来计算所有的插图insets资源的尺寸确定添加window的显示区域;

    相关文章

      网友评论

          本文标题:window层级结果树

          本文链接:https://www.haomeiwen.com/subject/fomkudtx.html