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. abiword Related Pages

    Application Framework The 'af' directory contains all source code for the cross-platform application ...

  2. jdbc 通过rs.getString()获取数据库中的时间字段问题

    例如在mysql中的一张表中存在一个字段opr_time为datetime类型, 在JDBC 中通过rs.getString("opr_time");来获取使会在日期后面添加&qu ...

  3. C# 操作IE浏览器

    最近的一个B/S系统中,用到了指模录入,当用户按了手指摸之后,要在IE浏览器的一个文本框上显示用户的姓名.由于要监控指模机的输入,因此客户端需要装一个.net控制台程序,通过此控制台程序监控指模机.这 ...

  4. WebStorm JavaScript 开发神器

    WebStorm 百度百科 http://baike.baidu.com/view/5443872.htm?fr=aladdin

  5. 【转】【经典算法】——KMP,深入讲解next数组的求解

    前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k:但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导 ...

  6. spring管理hibernate4 transaction getCurrentSession为什么报错?

    hibernate4不支持你用hibernate3的 getcurrentSession,建议你用openSession

  7. rsync常用参数详解

    rsync常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在linux中,一切皆是文件,包括你的终端,硬件设备信息,目录,内核文件等等.所以工作中我们难免会遇到拷贝文件 ...

  8. Nginx学习之四-Nginx进程同步方式-自旋锁(spinlock)

    自旋锁简介 Nginx框架使用了三种消息传递方式:共享内存.套接字.信号. Nginx主要使用了三种同步方式:原子操作.信号量.文件锁. 基于原子操作,nginx实现了一个自旋锁.自旋锁是一种非睡眠锁 ...

  9. pl/sql连接远程服务器

    1.oracle提供了instantclient,下载instantclient-basic-win32-10.2.0.4.zip,将包解压存放到本地,如:D:\STUDY\instantclient ...

  10. 安装Cocoapoads遇到的问题的解决办法

    错误一.首先来个错误截图