zoukankan      html  css  js  c++  java
  • 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的。

  • 相关阅读:
    【Gerrit】Gerrit与Jenkins/Hudson CI服务器搭建
    【Gerrit】Gerrit cmd query (gerrit命令行查询change信息)
    【python】jiraAPI使用教程 自动创建jira问题单并置状态为OPEN
    【Jenkins】jenkins简单搭建并执行任务
    【python】Redis介绍及简单使用
    【python】PIL 批量绘制图片矩形框工具
    【Flask】Flask快速玩框架
    C# split 几种使用方法
    40个有用的jQuery技术和教程
    jQuery性能优化
  • 原文地址:https://www.cnblogs.com/jasonxcj/p/4750275.html
Copyright © 2011-2022 走看看