Activity窗口结构

 每一个Activity组件都有一个关联的ContextImpl对象,同时,它还关联有一个Window对象,用来描述一个具体的应用程序窗口。由此又可知,Activity只不过是一个高度抽象的UI组件,它的具体UI实现其实是由其它的一系列对象来实现的

一Activity相关概念

Activity:Activity包含一个Window,该Window在Activity的attach方法中通过调用

PolicyManager.makeNewWindo创建;

View:最基本的UI组件,表示屏幕上的一个矩形区域;

DecorView:是Window中View的RootView,设置窗口属性;

Window:表示顶层窗口,管理界面的显示和事件的响应;每个Activity 均会创建一个

         PhoneWindow对象,是Activity和整个View系统交互的接口

WindowManager:一个interface,继承自ViewManager。所在应用进程的窗口管理器;

有一个implementation WindowManagerImpl;

主要用来管理窗口的一些状态、属性、view增加、删除、更新、窗口顺序、消息收集和处理等。

ViewRoot通过IWindowSession接口与全局窗口管理器进行交互:界面控制和消息响应;

ActivityThread应用程序的主线程,其中会创建关联当前Activity与Window;

创建WIndowManager实现类实例,把当前DecoView加入到WindowManager;

    

二 实现流程框架图

         Activity上Window的创建关联流程如下:

  

    

相关类结构:

  

      

层级关系:

  (此图网上盗用...)

    

  1. 一个Activity组件所关联的应用程序窗口对象的类型为PhoneWindow。

  2. 这个类型为PhoneWindow的应用程序窗口是通过一个类型为LocalWindowManager的本地窗口管理器来维护的。

  3. 这个类型为LocalWindowManager的本地窗口管理器又是通过一个类型为WindowManagerImpl的窗口管理器来维护应用程序窗口的。

  4. 这个类型为PhoneWindow的应用程序窗口内部有一个类型为DecorView的视图对象,这个视图对象才是真正用来描述一个Activity组件的UI的。

posted on 2015-08-22 14:53  Jasonxcj  阅读(404)  评论(0编辑  收藏  举报

导航