转自:http://songzhangzhang.blog.163.com/blog/static/694019812011119114235661/

View:最基本的UI组件,表示屏幕上的一个矩形区域。


Window: 表示一个窗口,包含一个View tree和窗口的layout 参数。View tree的root View可以通过getDecorView得到。还可以设置Window的Content View。
Activity包含一个Window,该Window在Activity的attach方法中通过调用PolicyManager.makeNewWindow创建。
WindowManager:一个interface,继承自ViewManager。 有一个implementation class:android.view.WindowManagerImpl。其实WindowManager并不是整个系统的窗口管理器,而是所在应用进程的窗口管理器。系统全局的窗口管理器运行在SystemServer进程中,是一个Service。ViewRoot通过IWindowSession接口与全局窗口管理器进行交互。将一个View add到WindowManager时,WindowManagerImpl创建一个ViewRoot来管理该窗口的根View。,并通过ViewRoot.setView方法把该View传给ViewRoot。
ViewRoot用于管理窗口的根View,并和global window manger进行交互。ViewRoot中有一个nested class: W,W是一个Binder子类,用于接收global window manager的各种消息, 如按键消息, 触摸消息等。 ViewRoot有一个W类型的成员mWindow,ViewRoot在Constructor中创建一个W的instance并赋值给mWindow。ViewRoot是Handler的子类, W会通过Looper把消息传递给ViewRoot。 ViewRoot在setView方法中把mWindow传给sWindowSession。
总之,每个窗口对应着一个Window对象,一个根View和一个ViewRoot对象。要想创建一个窗口,可以调用WindowManager的addView方法,作为参数的view将作为在该窗口上显示的根view。

更多相关文章

  1. [Android] [SystemUI] Recent -- 最近任务的启动流程
  2. android企业开发学习——handler
  3. 阅读Android消息机制源码的随手笔记
  4. Android平台的手机记账应用开发教程
  5. Android(安卓)NFC简介
  6. Android四种常用的消息传递机制/模式的比较
  7. android handler发送消息需要注意的地方
  8. 一步一步学android之布局管理器——RelativeLayout
  9. 关于安卓中 WindowManager.LayoutParams()的两种方式

随机推荐

  1. monkeyrunner截图限时免费阅读#1
  2. Android使用SQLite数据库(3)
  3. Android 实现从本地读取图片更改聊天背景
  4. 解决ScrollView嵌套RecyclerView时item显
  5. Android控件组合应用二
  6. 导入Android SDK中Sample下ApiDemos报错
  7. Android 自定义控件高度设置onMeasure方
  8. Python 3.3.2 +在android上
  9. 提取Launcher中的WorkSapce,可以左右滑动
  10. Android Gradle实用技巧——多渠道打包