ANDROID窗口管理服务实现机制和架构分析

本文深入探讨了Android窗口管理服务的功能,包括Z-ordered维护、窗口操作、Token管理等。核心组件WindowManagerService与客户端通过BINDER机制交互,实现窗口的创建、布局和销毁等。同时,文章介绍了WindowManager接口的关键方法,如添加、移除和更新视图,并阐述了窗口管理的类图结构和服务端与客户端的交互过程。
摘要由CSDN通过智能技术生成


一、功能

    窗口管理是ANDROID框架一个重要部分,主要包括如下功能:

   (1Z-ordered的维护
   (2)窗口的创建、销毁
   (3)窗口的绘制、布局

   (4Token管理,AppToken

   (5)活动窗口管理(FocusWindow

   (6)活动应用管理(FocusAPP

   (7)输入法管理

   (8)系统消息收集与分发

       这些功能主要由一个窗口管理服务和相应的客户端来实现的,客户端通过BINDER机制与服务实现交互。

      窗口管理服务端负责主要的窗口管理功能,由一个WindowManagerService服务及相关的类来组成。客户端则负责与窗口管理服务交互,并对应用和其它服务提供窗口管理接口,包括提供窗口视图的添加、移出和更新等接口函数,客户端的功能通过WindowManager接口及其实现WindowManagerImpl和相关类来完成,WindowManager提供的接口函数包括如下几个:

         1 public voidaddView(View view, ViewGroup.LayoutParams params)

               用来在窗口实例对应的窗口上添加一个视图。

2public void removeView(View view)

              用来从窗口实例对应的窗口上移出一个视图。

         3public void updateViewLayout(View view,ViewGroup.LayoutParams params)

             用来更新窗口上的视图的布局。

4   public DisplaygetDefaultDisplay();

   每个窗口管理实例需要绑定到特定的显示对象上,并在此显示对象上创建和显示新的窗口。

   该函数返回一个窗口管理实例管理和使用的显示对象。

      窗口为了能在另外的显示器上显示,需要先调用Context.createDisplayContext创建一个显示对象使用的独立的Context,然后使用该Context调用Context.getSystemService(Context.WINDOW_SERVICE)函数获得该显示对象对应的窗口管理实例。也可以直接创建一个Presentation对象,Presentation对象会自动创建显示对象需要的窗口管理实例和Context对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值