Android窗口管理

Activity添加客户端窗口时序图

三、  窗口管理

Android的窗关管理是基于C/S模式的,并且使用独立进程的方式实现。窗口管理的服务端WindowManagerService运行在独立的进程system_server里,当应用程序需要创建窗口时,通过进程通信的方式请求WindowManagerService创建窗口,由WindowManagerService向应用程序传递和窗口相关的交互消息。所有程序的窗口都在服务端管理,窗口的显示和控制都在WindowManagerService里处理。

WindowManagerService主要完成了以下几部分功能:

1.      窗口的添加和删除

2.      窗口的显示和隐藏控制

3.      Z-order顺序管理

4.      焦点窗口和焦点应用的管理

5.      输入法窗口管理和墙纸窗口管理

6.      转场动画

7.      系统消息收集和分发

服务端的实现代码是在/framework/base/services/java/com/android/server/wm/里,核心的几个类是:

WindowManagerService.java

WindowState.java

WindowToken.java

AppWindowToken.java

Session.java

InputManager.java

InputMonitor.java

类解释:

WindowManagerService负责完成窗口的管理工作;

WindowState和客户端窗口一一对应,应用调用WindowManager.addView()时,最终会在WindowManagerService添加一个WindowState与之一一对应。

WindowToken是一个句柄,保存了所有具有同一个token的WindowState。应用请求WindowManagerService添加窗口的时候,提供了一个token,该token标识了被添加窗口的归属,WindowManagerService为该token生成一个WindowToken对象,所有token相同的WindowState被关联到同一个WindowToken。如输入法添加窗口时,会传递一个mCurrToken&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值