WindowManagerService的简要介绍

WindowManagerService在Android系统中负责管理所有窗口,不仅处理Activity窗口,还包括壁纸、子窗口、状态栏和输入法窗口等。它通过窗口在X、Y、Z轴的位置和大小决定显示哪些窗口及位置。在切换Activity时,WindowManagerService与SurfaceFlinger和策略类(如PhoneWindowManager)交互,处理复杂的窗口管理任务。文章将探讨窗口大小位置计算、组织、输入法和壁纸调整、Z轴位置、启动窗口以及Activity切换和动画等细节。
摘要由CSDN通过智能技术生成

在Android系统中,对系统中的所有窗口进行管理是窗口管理服务WindowManagerService的职责。在Android系统中,同一时刻,只有一个Activity窗口是激活的,但是,对于WindowManagerService服务来说,这并不意味着它每次只需要管理一个Activity窗口,例如,在两个Activity窗口的切换过程中,前后两个Activity窗口实际上都是可见的。即使在只有一个Activity窗口是可见的时候,WindowManagerService服务仍然需要同时管理着多个窗口,这是因为可见的Activity窗口可能还会被设置了壁纸窗口(Wallpaper Winodw)或者弹出了子窗口(Sub Window),以及可能会出现状态栏(Status Bar)以及输入法窗口(Input Method Window),如图所示:

在这里插入图片描述
因此,WindowManagerService服务是不可以假设同一时刻它只需要管理一个窗口的,它需要通过各个窗口在屏幕上的位置以及大小来决定哪些窗口需要显示的以及要显在哪里,这实际上就是要计算出各个窗口的可见区域。

SurfaceFlinger服务在渲染整个屏幕的UI的时候,会对各个窗品的可见性进行计算,因此,WindowManagerService服务只要将它所管理的各个窗品的位置以及大小告诉SurfaceFlinger服务,后者可以帮帮它计算出各个窗口的可见区域了。注意,这里,这里所说的窗口位置包括窗口在X、Y和

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值