- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Android核心分析》
摘抄自 /blog-97745-249.html
原文地址:/mobiledev/201107262.asp
《Android 核心分析》整理如下
13.Android核心分析之Android GEWS窗口管理基本架构篇
Android的窗口管理是C/S模式的。Android中的Window是表示Top Level等顶级窗口的
概念。DecorView是Window的Top-Level View,这个View我称之为主View,DecorView
会缺省的attach到Activity的主窗口中。主View被加入到WindowManager中,WM使用
WindowState与这个主View对应。
Activity建立一个主窗口后,在将主窗口添加到WindowManager时,首先要建立
WindowManager代理对象,并打开一个会话(实现IWindowSession AIDL接口),并维持该
会话。Activity将通过该会话与WindowManager建立联系,这个Session是C/S体系的基
础,Client通过WindowSession将window加入到Window Manager中。
一个完整的窗口概念横跨了View,ViewRoot,WindowManager Service。Window,
DecorView,View,IWindow ,ISession,WindowState之间的关系如下
Client端的Activity通过Session会话与WindowManager建立对话,而WindowManager则
通过IWindow接口访问Client,将消息传递到Client端,通过消息分发渠道,将消息传递
到处理函数OnXXX。
后面我们将通过Client,WM Service分别加以分析。
2 Client端
我一致认为在Android中Window的概念并不是个很重要的概念。他的Window类,只是在
PhoneWindow和MidWindow中使用。而PhoneWindow只是做了一个具体跟手机功能相关的公
用事件的处理,所以在Android中PhoneWindow并不是一个抽象的纯正概念,而是一个跟
手机系统相关的一个特别窗口概念,例如按键的默认动作处理,按键音的发出等等。
2.1 View
在Activity中真正重要的概念是View,以下是Google官方对View的定义:
This class represents the basic building block for user interface components. A
View occupies a rectangular area on the screen and is responsible for drawing
and event handling. View is the base class for emwidgets/em, which are used
to create interactive UI components (buttons, text fields, etc.). The {@link
android.view.ViewGroup} subclass is the base class for emlayouts/em, which
are invisible containers that hold other Views (or other ViewGroups) and define
their layout properties.
我对View不做翻译,翻译成视图好像不太佳,View在Android中,View比视图具有广的
外延。View包含了用户交互,包含了显示,视图在中文中仅仅表示了静态的显示。对于
View的理解应该从最容易的理解开始。我们使用过编辑器,在Android中这个编辑器就是
一个View,这个编辑器需要显示文字,需要接收用户的键盘输入和鼠标选择,但是一个屏
幕上有多个编辑器,如何管理,如何切换焦点编辑器,这些都是需要管理的。
客户端的组成:(Window,View,ViewRoot,WindowManager Proxy)
在Activity在performLaunchActivity时,会使用Activity.attach()建立一个
PhoneWindow主窗口。这个主窗口的建立并不是一个重点。handleResumeActivity真正要
启动一个Activity时候,将主窗口加入到WindowManager,当
文档评论(0)