Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API,如

onKeyEvent, onTouchEvent等。

并维护应用程序的生命周期。Activity本身是个庞大的载体,可以理解成是应用程序的载体,如果木有Activity,android应用将无法运

行。也可以理解成

android应用程序的入口。Acivity的实例对象由系统维护。系统服务ActivityManager负责维护Activity的实例对象,并根

据运行状态维护其状态信息。

当我们调用Acitivity的

setContentView方法的时候实际上是调用的Window对象的setContentView方法,所以我们可以看出Activity中关于界

面的绘制实际上全是交给Window对象来做的。绘制类图的话,可以看出Activity聚合了一个Window对象。

在该方法中,首先创建一个DecorView,DecorView是一个扩张FrameLayout的类,是所有窗口的根View。我们在Activity中调用的setConctentView就是放到DecorView中了。这是我们类图的聚合关系如下:

Activity--->Window--->DecorView

Activity创建后系统会调用其attach方法,将其添加到ActivityThread当中,在attach方法中创建了一个window对象。window对象是一个抽象类。要注意window对象创建时并木有创建

Decor对象。用户在Activity中调用setContentView,然后调用window的setContentView,这时会检查

DecorView是否存在,如果不存在则创建DecorView对象,然后把用户自己的View 添加到DecorView中。

在ActivityThread当中调用wm.addView(decor, l);把它加入到window

manager proxy的mViews中,同时为这个decor

view创建一个ViewRoot,ViewRoot负责协调decorview与windowmanager直接绘图、事件处理。说简单点就是

DecorView是客户端所有view的根,window manager

proxy为这个decorview创建一个ViewRoot和Window manager service打交道

我们可以去看看DecorView的实现,它是PhoneWindow的一个内部类。实

现很简单,它默认会包含一个灰色的标题栏,然后在标题栏下边会包含一个空白区域用来当用户调用setContentView的时候放置用户View,并传

递事件。

android类之间的关系,Android 中Activity,Window和View之间的关系相关推荐

  1. 文化袁探索专栏——Activity、Window和View三者间关系

    文化袁探索专栏--Activity.Window和View三者间关系 <文化袁探索专栏--View三大流程#Measure 文化袁探索专栏--View三大流程#Layout 文化袁探索专栏--H ...

  2. android 如何获得activity的view对象,Android的Activity 、 Window 、 View之间的关系

    什么是Activity .View . Window? Activity:是Android 四大组件之一, 是存放View对象的容器,也是我们界面的载体,可以用来展示一个界面.它有一个SetConte ...

  3. sql语句和java的关系_java中Statement 与 PreparedStatement接口之间的关系和区别

    Statement 和 PreparedStatement之间的关系和区别. 关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使 ...

  4. Android 中MVC实例之Activity,Window和View

    MVC模式的简单介绍: 除此之外,此模式通过对复杂度的简化,使程序结构更加直观.软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能.专业人员可以通过自身的专长分组: (控制器Contr ...

  5. android 类对象的存储,android - 以共享首选项存储和检索类对象

    android - 以共享首选项存储和检索类对象 在Android中,我们可以在共享首选项中存储类的对象,并在以后检索该对象吗? 如果有可能怎么办? 如果不可能做到这一点的其他可能性是什么? 我知道序 ...

  6. dpi与dp的关系_Android中 dp,px,dpi三者之间的关系

    首先弄明白三个概念 dp/dip(Density-independent pixel ) 设备独立像素(是一个关联Density和pixel的虚拟像素单位) dpi (dots per inch) 每 ...

  7. Android阿面试积累,android项目开发实战密码

    公差为1的等差数列求和,如何优化 自己的优势在哪里 注解如何获取,反射为何耗性能? Java的GC机制,分代回收策略 Binder机制:ServiceManager什么时候注册的? int,long的 ...

  8. 【Android 界面效果10】Android中View,ViewGroup,Window之间的关系

    一.首先说说View和ViewGroup吧 Android系统中的所有UI类都是建立在View和ViewGroup这两个类的基础上的.所有View的子类成为"Widget",所有V ...

  9. Android基础新手教程——4.1.3 Activity登堂入室

    Android基础新手教程--4.1.3 Activity登堂入室 标签(空格分隔): Android基础新手教程 本节引言: 好的,在学习了两节的Activity后相信大家已经知道怎样去使用Acti ...

最新文章

  1. 谈点正经的:Papi酱能火,如果你现在学她却未必能火起来
  2. docker 安装oracle_Windows系统下安装Docker,包你满意!
  3. 测试中如何管理外包质量_如何从测试自动化中实现价值
  4. wpgcms---流程控制
  5. 5、MySQL通用查询日志(General Query Log)
  6. KubeCon 2019 北美会议完美落幕| 云原生生态周报 Vol. 29
  7. .NET基金会讨论 .NET 开源事业之路
  8. 一张图看懂阿里企业级分布式应用服务EDAS
  9. 二叉树中两个节点的第一个祖先父节点
  10. 体检结果(2018年10月,胃肠镜)
  11. 拓端tecdat|matlab贝叶斯隐马尔可夫hmm模型实现
  12. 机器学习和统计学和数据发掘_面向数据科学和机器学习程序员的5项最佳数学和统计学课程...
  13. ios零基础学习 准备什么,如何去学习
  14. python帝国cms_帝国CMS教程
  15. IT行业里的热门技术 | 热门IT技术项目分享 | 详细介绍一下机器人技术
  16. 【比赛回顾】广工2020程序设计初赛B-秋夜easy
  17. 四、Amlogic A311D 音频回采信号LOOPBACK指南
  18. PCB原理图绘制(7)——PCB的设置与布线
  19. 如何用P6软件编制项目进度计划
  20. 2018第一季度工作总结-遇到的困难和解决

热门文章

  1. aspx页面,中文乱码解决方案
  2. 关于使用jacob出现的异常
  3. Exception in thread “main“ java.lang.IllegalStateException: Failed to read 问题解决
  4. scrapy爬虫返回302,301,解决方法
  5. 在ASP.NET Web API中返回错误的最佳实践
  6. 如何在JavaScript中检查变量是否为整数?
  7. 用户输入和命令行参数
  8. 台式电脑如何重装系统windows10
  9. 计算机组成原理mw,计算机组成原理 存储器
  10. c语言 char转int_第三章、C语言中的数据类型