• 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的。

  • 相关阅读:
    序列化实现 深拷贝
    为边框应用图片 border-image
    阴影 box-shadow(二)
    阴影 box-shadow(一)
    css3之圆角效果 border-radius
    文档对象模型(DOM)
    Cookie/Session机制详解
    PHP错误The server encountered an internal error or misconfiguration and was unable to complete your re
    关于js with语句的一些理解
    使用JavaScript+Html创建win8应用(二)
  • 原文地址:https://www.cnblogs.com/jasonxcj/p/4750275.html
Copyright © 2020-2023  润新知