Android----Window内部机制

一、Window的添加过程

(1)Window添加过程:  WindowManager(addView()) --> 此接口的真正实现 WindowManagerImpl类 —> 全部交给WindowMangerGlobal实现。     这是一种桥接模式

Android----Window内部机制

(2)使用WindowManagerGlobal的addView添加Window时分为如下几步

    (2.1)参数合法性检查、如果是子Window还需要调整布局参数

Android----Window内部机制

   (2.2)创建ViewRootImpl并将View添加到列表中

   (2.3)通过ViewRootImpl更新界面并完成Window添加过程

        View绘制过程由ViewRootImpl完成。在setView内部通过requestLayout完成异步刷新。

Android----Window内部机制

WindowSession来完成Window的添加过程。

二、Window的删除过程

同添加过程,也是通过WindowManagerGlobal的removeView完成。

之后调用ViewRootImpl的die方法,实际上是把View添加到待删除列表中。

三、Window更新过程

同添加过程,也是通过WindowManagerGlobal的updateViewLayout完成。

Android----Window内部机制