Android的窗口机制

将用户的操作变成交互事件传递到交互界面的机制。

Android的窗口机制是为了将用户与界面的交互传递到对应的控件,之所以称为控件机制是因为,采取了基于窗口Window注册的实现模式。

窗口机制的核心是窗口管理服务,实现类是WindowManagerService,运行在系统核心进程中的一个独立线程中。负责管理交互界面的控件树,并将用户的操作转换成交互事件传递到当前的交互界面。

每棵控件树都有一个ViewParent接口对象。接口的实现类是ViewRoot,在应用的一端,所有的ViewRoot对象由WindowManager管理,开发者通过调用Context.getSystemService传入Context.WINDOW_SERVICE获得该对象。

通过WindowManagerAndroid会将各个ViewRoot对象与窗口管理服务建立双向的通信信道,使得ViewRoot和窗口管理服务可以彼此远程调用。每个ViewRoot对应的控件树,都会有其控制的矩形区域,成为该对象的“窗口”。

ViewRoot通过WindowManager向窗口管理服务发送注册请求。窗口管理服务为该ViewRoot建立一个双向的通信信道。当用户通过硬件设备与应用进行交互时,系统底层的驱动会将操作传递到窗口管理服务,窗口管理服务会解析操作,将其传唤为交互事件。窗口管理服务尝试定位当前与用户交互的窗口,然后将请求发送给窗口的ViewRoot对象,ViewRoot对象收到交互事件后,沿着控件树向下进行传递。

窗口管理服务为每一个可视的窗口分配一个窗口层次Z-order。当用户与设备产生交互时,窗口管理服务会寻找与该窗口区域关联的窗口,然后将事件传递给层次最高的窗口。在窗口管理服务中,越晚添加的窗口的窗口层次越高,更易接受交互消息。

除此之外,一些系统交互模块如状态栏、通知栏具有更高的基础窗口层次,可以优先普通应用的窗口来处理与用户的交互。

更多相关文章

  1. android中使用httpclient方法获得网页内容并对json对象解析
  2. Android自定义控件的使用
  3. 一个非常好用的自定义圆形控件
  4. ScrollView中若嵌套有滑动的控件(如:WebView,ListView或GridView)
  5. Android原生Switch控件滑块thumb卡住问题的解决方法
  6. android的Activity窗口模式
  7. android控件的监听绑定方法
  8. android 主要的布局控件简介
  9. Android 实现顶层窗口、浮动窗口

随机推荐

  1. 《Android实例剖析笔记》系列文章
  2. Android:EditText 多行显示及所有属性
  3. 【Android】设置android:maxLines="1"后,a
  4. Android--recycleview滚动条
  5. Android系统自带样式
  6. Android(安卓)使用 TableLayout 布局拉伸
  7. Android(安卓)EditText各种属性及作用
  8. Android(安卓)textAppearance的属性设置
  9. Android应用开发——系统自带样式Android
  10. Gridview的stretchMode详解附自动宽度