http://blog.csdn.net/chiuan/article/details/7062215

http://blog.163.com/fenglang_2006/blog/static/133662318201022104256580/

Activity Window View的关系

问题:

Activity是Android得显示视图么?

题目中它们之间的关系?

LayoutInlater()是做什么的?

layoutInflater.inflater()是做什么的?

1、PhoneWindow才是View真正的实例化方法

2、一个Activity构造时候会构造一个只有一个Phonewindow(窗)

3、这个窗口有一个ViewRoot(view, viewgroup),窗口可以贴很多装饰,用layout\layoutInflater

其实可以这么理解ViewRoot就像C盘,每个Activity创建的只有一个viewRoot哦!,然后下面的结构就是view啦

4、然后这个viewroot根会addView(viewgroup),可以直接setContentView()时候传入一个R.layout.ID,也可以用layoutInflater动态地生成这个view装饰体。

5、windowManagerService接受的消息,并且回调Activity函数


对于屏幕显示而言,整个是window,这个window里显示的东西是view(activity是逻辑上的东西,增加了生命周期管理等. 里面具体的东西也是view。而且启动activity的实现也是往window里加view),往window里加view,是通过调用WindowManager(WindowManagerImpl).addView()来实现的。

在addView里,会为每个view创建一个viewRoot(这是逻辑上的东西,用来负责view的事件处理和逻辑处理,并和WindowsManagerService建立联系),而在WindowManagerImpl里,会维护viewRoot的数组。

最终会调用ViewRoot.setView(),在setView里会显示该view等。在setView的实现里,会调用Session.add()来addWindow,通过这个方法,会将ViewRoot和WindowManagerService联系起来(比如说分发事件等),并且这个方法里会调用PhoneWindowManager.prepareAddWindowLw()。

调用过程如下:

ViewRoot.setView()->WindowManagerService.relayout()->WindowManagerService.relayoutWindow()->WindowManagerService.performLayoutAndPlaceSurfacesLocked()->WindowManagerService.performLayoutAndPlaceSurfacesLockedInner()->WindowManagerService.performLayoutLockedInner()->PhoneWindowManager.beginLayoutLw()

然后ViewRoot.setView()->WindowManagerService.finishDrawing()陆续又会调用到一些PhoneWindowManager里的layout方法。

对于WindowManager而言,只要调用了AddView,上述的流程都会走一遍。

对于一个Window而言,目前大概可以分为几个部分:statusbarview(0,0,320,25),应用的activity(0, 25,320,480)

http://blog.163.com/fenglang_2006/blog/static/133662318201022104256580/

Activity Window View的关系的更多相关文章

  1. Activity Window View WindowManager关系&Touch事件分发机制

    http://www.cnblogs.com/linjzong/p/4191891.html https://www.cnblogs.com/kest/p/5141817.html https://b ...

  2. activity window view 关系

    1.Activity , Window和View的关系是什么? 跟踪Activity的源码就会发现:Activity.attch() -> PolicyManager -> Policy ...

  3. 底层剖析 Window 、Activity、 View 三者关系

    不管工作几年的 Android 工程师,或多或少都听说过 Window 的概念,并且隐隐约约感觉它在 Activity 与 View 之间应该发挥着某种连接的作用.但是如果需要说出这 3 者之间的关系 ...

  4. android中activity,window,view之间的关系

    activity:控制单元 window:承载模型 view:显示视图 几个小tip: 1.一个 Activity 构造的时候一定会构造一个 Window(PhoneWindow),并且只有一个 2. ...

  5. android 中的 window,view,activity具体关系

    通过讨论这个问题,我们能够见识到google是对面向对象模式的理解,能够理解android底层的一些调用.这也是一道很常见的面试题. 我们这篇文章就来解决这四个问题: Android  中view的显 ...

  6. 动态加载Layout 与 论Activity、 Window、View的关系

    1)动态加载Layout的代码是 getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null)); ...

  7. 动态载入Layout 与 论Activity、 Window、View的关系

    1)动态载入Layout的代码是 getWindow().setContentView(LayoutInflater.from(this).inflate(R.layout.main, null)); ...

  8. View, Activity, Window

    View, Activity, Window 2010-03-02 10:42:56|  分类: android|举报|字号 订阅     对于屏幕显示而言,整个是window,这个window里显示 ...

  9. 2018-01-13 view绘制流程-activity启动流程-window-decorView-ViewRootImpl关系

    1.activity启动流程: https://www.jianshu.com/p/927ca995bca6 http://blog.csdn.net/qian520ao/article/detail ...

随机推荐

  1. Java Spring MVC

    Spring MVC的实现包括 实现Controller类和基于注解的Controller RequstMapping方式 依赖: <!-- https://mvnrepository.com/ ...

  2. mysqlbackup

    mysqlbackup 使用学习 1.设置数据库用户的相关权限 '; grant reload,replication client,super,process on *.* to backupuse ...

  3. FLASH 存储学习-串行SPI nor

    1.1 SST25VF080B简介 1.1.1 主要特性 关键点:容量.速度(时钟速度.读写速度).功耗. 容量:8MBit: 最高SPI时钟频率:50MHz: 低功耗模式下电流消耗:5uA,正常读模 ...

  4. SQL Server 视图

    视图实际上就是一个存储查询,重点是是可以混合和匹配来自基本表(或者其他视图)的数据,从而创建在很多方面像另一个基表那样起作用的对象.可以创建一个简单的查询,仅仅从一个表中选择几列,而忽略其他列:或者也 ...

  5. js Array数组的使用

    js Array数组的使用   Array是javascript中的一个事先定义好的对象(也可以称作一个类),可以直接使用 创建Array对象 var array=new Array(): 创建指定元 ...

  6. Linux和windows动态库

    转载:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 态链接库技术实现和设计程序常用的技术,在Windows和Linux系 统中 ...

  7. linux vi 中s 替换方法

    vi/vim 中可以使用 :s 命令来替换字符:s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n, ...

  8. Linux系统编程(22)——响应信号

    进程对信号的响应 进程可以通过三种方式来响应一个信号: 1.忽略信号,即对信号不做任何处理,其中,有两个信号不能忽略:SIGKILL及SIGSTOP: 2.捕捉信号.定义信号处理函数,当信号发生时,执 ...

  9. 【转】100行代码实现最简单的基于FFMPEG+SDL的视频播放器

    FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手.我刚接触FFMPEG的时候也感觉不知从何学起. 因此我把自己做项目过程中实现的一个非常简单的视频播放器 ...

  10. 并查集+二分-hdu-4750-Count The Pairs

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4750 题目大意: 给一无向图,n个点,m条边,每条边有个长度,且不一样.定义f(i,j)表示从节点i ...