Android----Window内部机制
一、Window的添加过程
(1)Window添加过程: WindowManager(addView()) --> 此接口的真正实现 WindowManagerImpl类 —> 全部交给WindowMangerGlobal实现。 这是一种桥接模式
(2)使用WindowManagerGlobal的addView添加Window时分为如下几步
(2.1)参数合法性检查、如果是子Window还需要调整布局参数
(2.2)创建ViewRootImpl并将View添加到列表中
(2.3)通过ViewRootImpl更新界面并完成Window添加过程
View绘制过程由ViewRootImpl完成。在setView内部通过requestLayout完成异步刷新。
WindowSession来完成Window的添加过程。
二、Window的删除过程
同添加过程,也是通过WindowManagerGlobal的removeView完成。
之后调用ViewRootImpl的die方法,实际上是把View添加到待删除列表中。
三、Window更新过程
同添加过程,也是通过WindowManagerGlobal的updateViewLayout完成。