理解Window和WindowManager

1.Window是一个抽象类,它的具体实现是PhoneWindow。

Window是一个抽象概念,每一个Window都对应着一个View和一个ViewRootImpl,Window和View通过ViewRootImpl建立关联。因此Window并不是实际存在的,它是以View的形式存在。

2.WindowManager是一个接口,是外界访问Window的入口。它的真正实现是WindowManagerImpl类。在WindowManagerImpl中有Window的三大操作实现:添加、更新、删除。都是调用mGlobal的方法,即将所有的操作委托给WindowManagerGlobal来实现。最终会通过WindowSession来完成操作。WindowSession的类型是IWindowSession,是一个Binder对象,真正的实现类是Session。Session内部会通过WindowManagerService来实现功能操作。
所以Window的操作主要通过WindowManager与WindowManagerService之间的IPC操作来完成。
WindowManager是外界访问Window的入口,它通过与WindowManagerService进行IPC通信来管理和操作WindowWindowManagerImpl是WindowManager接口的实现类,但它并不直接实现Window的三大操作(添加、更新、删除),而是将这些操作委托给WindowManagerGlobal来处理。WindowManagerGlobal是一个单例工厂类,它负责具体实现Window的操作。 Window通过setWindowManager方法与WindowManager建立关联,并通过WindowManager来实现具体的操作。通过这种桥接模式的设计,Window的操作被分离出来,使得系统更加灵活和可扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Android Window学习记录(一)理解windowwindowmanager](https://blog.csdn.net/qq_53749266/article/details/124332280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Android解析WindowManager(一)WindowManager体系](https://blog.csdn.net/heng615975867/article/details/108726623)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值