方式一:Activity 直接获取(最常用)
源码位置:frameworks/base/core/java/android/app/Activity.java
//应用层代码- Activity 中获取windowManager-----activity与windowManagerImpl是一一对应的,windowManagerImpl是Activity专属的窗口管理者,WindowManagerImpl:管view的注册等(addview)Activity·getWindowManager()源码解析
方式二:PhoneWindow 创建 WindowManager
PhoneWindow.getWindowManager()源码
源码位置:frameworks/base/core/java/android/view/window.java(第1017-1019行)//Phonewindow
//Phonewindow是activity独有的窗口容器,用来管理view的布局结构
//windowManagerImpl(windowManager实体)用来管理view到窗口系统的注册
//两者从不同维度协作,共同完成Activity的窗口显示。可以理解成:两者都是窗口管理者,他们与activity都是一一对应的关系,一个 activity对应一个 Phonewindow,一个 activity对应一个windowManagerImp

window是抽象类,Phonewindow是他的具体实现类

方式三:Context.getSystemService()获取系统服务
Context获取 WINDOW_SERVICE 的实现
Context是"上下文"概念,Activity 是"界面上下文"
Activity 是 Context 的间接子类
继承关系如下:

代码调用链路

总结
Activity·通过attach()初始化时,创建Phonewindow和·WindowManagerImpl
