Android的窗口机制

Android的窗口机制

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

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

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

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

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

 

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

 

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

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值