View, Activity, Window
来源:互联网 发布:ubuntu设置中文失败 编辑:程序博客网 时间:2024/05/17 09:45
在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)
Activity中UI框架基本概念
Activity 是应用程序的基本组成部分,提供了可视的界面,与用户进行交互;
具体Acitivity是怎么样显示这些事视图元素以及响应事件交互的。
一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的创建关联流程如下:
相关类结构:
层级关系:
(此图网上盗用...)
- Activity、Window、View
- View、 window、 Activity
- activity,window,view关系
- View, Activity, Window
- android-Activity-Window-View
- Activity/Window/View
- activity,window,view
- Activity Window View的关系
- View, ViewRoot, Window, WindowManager, Activity
- Activity,Window,View的关系
- Activity、Window、View的关系
- activity+window+view简单说明
- Activity、Window、View的关系
- Activity、Window、View的关系
- Activity、Window、View的关系
- Activity、Window、View的关系
- Android : Activity,Window and View.
- Activity、Window、View的关系
- Auto Layout 入门及使用
- vs2008 C++定则表达式
- 如何备份Github博客至GitCafe
- 【吐槽】火车票一票难求啊
- Objective C 的单例模式 Singleton with ARC
- View, Activity, Window
- SVN安装配置与使用(完美版)
- 第十七周 OJ练习题--用数字造数字
- iOS应用如何实现64位的支持
- Java finally语句到底是在return之前还是之后执行?
- Tomcat下使用war包发布项目
- 项目经理应该把 30% 的时间用在编程上
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- Android开发之如何保证Service不被杀掉(broadcast+system/app)