1.Window是一个抽象类,它的具体实现是PhoneWindow。
Window是一个抽象概念,每一个Window都对应着一个View和一个ViewRootImpl,Window和View通过ViewRootImpl建立关联。因此Window并不是实际存在的,它是以View的形式存在。
2.WindowManager是一个接口,是外界访问Window的入口。它的真正实现是WindowManagerImpl类。在WindowManagerImpl中有Window的三大操作实现:添加、更新、删除。都是调用mGlobal的方法,即将所有的操作委托给WindowManagerGlobal来实现。最终会通过WindowSession来完成操作。WindowSession的类型是IWindowSession,是一个Binder对象,真正的实现类是Session。Session内部会通过WindowManagerService来实现功能操作。
所以Window的操作主要通过WindowManager与WindowManagerService之间的IPC操作来完成。
网友评论