ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

View绘制流程学习--获取WindowManager的三种方式

View绘制流程学习--获取WindowManager的三种方式 方式一Activity 直接获取最常用源码位置frameworks/base/core/java/android/app/Activity.java//应用层代码- Activity 中获取windowManager-----activity与windowManagerImpl是一一对应的windowManagerImpl是Activity专属的窗口管理者WindowManagerImpl管view的注册等addviewActivity·getWindowManager()源码解析方式二PhoneWindow 创建 WindowManagerPhoneWindow.getWindowManager()源码源码位置frameworks/base/core/java/android/view/window.java(第1017-1019行)//Phonewindow//Phonewindow是activity独有的窗口容器用来管理view的布局结构//windowManagerImplwindowManager实体用来管理view到窗口系统的注册//两者从不同维度协作共同完成Activity的窗口显示。可以理解成两者都是窗口管理者他们与activity都是一一对应的关系一个 activity对应一个 Phonewindow一个 activity对应一个windowManagerImpwindow是抽象类Phonewindow是他的具体实现类方式三:Context.getSystemService()获取系统服务Context获取 WINDOW_SERVICE 的实现Context是上下文概念Activity 是界面上下文Activity 是 Context 的间接子类继承关系如下:代码调用链路总结Activity·通过attach()初始化时创建Phonewindow和·WindowManagerImpl
返回列表