Activity是应用程序的基本组成部分,提供了可视的界面,与用户进行交互。
1、Activity相关概念
Activity:基本的页面单元,Activity包含一个Window, Window上可以绘制各种view,该Window在Activity的attach方法中通过调用
PolicyManager.makeNewWindo创建;
View:最基本的UI组件,表示屏幕上的一个矩形区域;
Window:表示顶层窗口,管理界面的显示和事件的响应;每个Activity均会创建一个
PhoneWindow对象,是Activity和整个View系统交互的接口;
PhoneWindow类:该类继承于Window类,同时,PhoneWindow类内部包含了一个DecorView对象。简而言之,PhoneWindow是把一个FrameLayout进行了一定的包装,并提供了一组通用的窗口操作接口。
DecorView:是Window中View的RootView,设置窗口属性;该类是一个FrameLayout的子类,并且是PhoneWindow中的一个内部类。Decor的英文是Decoration,即“修饰”的意思,DecorView就是对普通的FrameLayout进行了一定的修饰,比如添加一个通用的Titlebar,并响应特定的按键消息等。
WindowManager:一个interface,继承自ViewManager。所在应用进程的窗口管理器;
有一个implementationWindowManagerImpl;
主要用来管理窗口的一些状态、属性、view增加、删除、更新、窗口顺序、消息收集和处理等。
ViewRoot:它并不是一个View类型,而是一个Handler,通过IWindowSession接口与全局窗口管理器进行交互:界面控制和消息响应,它的主要作用如下:
A.向DecorView分发收到的用户发起的event事件,如按键,触屏,轨迹球等事件;
B.与WindowManagerService交互,完成整个Activity的GUI的绘制
ActivityThread:应用程序的主线程,其中会创建关联当前Activity与Window;
创建WIndowManager实现类实例,把当前DecoView加入到WindowManager;
2、实现流程框架图
Activity上Window的创建关联流程如下:
相关类结构:
相关类结构: