zoukankan      html  css  js  c++  java
  • Activity Window View的关系

    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),窗口可以贴很多装饰,用layoutlayoutInflater

    其实可以这么理解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/

  • 相关阅读:
    架构设计的UML图形思考
    SymmetricDS文档翻译--【Chapter 3. 具体配置(Configuration)[section C]】
    LeetCodeOJ. String to Integer (atoi)
    jquery05 继承
    jquery 04
    jquery constructor(null)
    jquery js解析函数、函数直接调用
    jquery init 关系
    jquery constructor
    jQuery03
  • 原文地址:https://www.cnblogs.com/daishuguang/p/3678916.html
Copyright © 2011-2022 走看看