湖南省网站备案时间济南网站微信

张小明 2026/1/5 10:23:16
湖南省网站备案时间,济南网站微信,厦门市住房建设网站,泉州专业制作网站开发握 Android 中 Window 与 WMS(WindowManagerService)完成绑定的全链路详细流程,包括从应用层触发绑定、跨进程通信到 WMS 内部处理的每一个核心环节 —— 这是理解 Window 如何从「内存对象」变为「屏幕可见界面」的核心,整个流程跨越应用进程和 SystemServer 进程,核心依…握 Android 中 Window 与 WMS(WindowManagerService)完成绑定的全链路详细流程,包括从应用层触发绑定、跨进程通信到 WMS 内部处理的每一个核心环节 —— 这是理解 Window 如何从「内存对象」变为「屏幕可见界面」的核心,整个流程跨越应用进程和 SystemServer 进程,核心依赖 Binder 通信和 ViewRootImpl 的桥梁作用。下面我会以应用 Activity 的 Window(PhoneWindow)为例,拆解从触发绑定到最终完成的完整步骤,并结合源码级逻辑说明关键细节。一、核心前提:绑定流程的参与角色先明确全流程的核心参与者,理解角色分工才能理清流程逻辑:角色(进程)核心类 / 接口作用应用进程1. WindowManagerImpl/WindowManagerGlobal(WindowManager 的实现)2. ViewRootImpl(应用 - WMS 桥梁)3. PhoneWindow(Window 具体实现)4. DecorView(Window 的顶级 View)触发绑定请求、创建通信桥梁、承载 UI 内容SystemServer 进程1. WMS(WindowManagerService)2. IWindowSession(Binder 接口,WMS 的会话)3. WindowToken(Window 身份凭证)4. SurfaceControl(Surface 管理)接收绑定请求、校验 Window 合法性、分配 Surface、管理 Window 生命周期通信桥梁IWindow/IWindowSession(AIDL 生成的 Binder 接口)应用进程与 WMS 的跨进程通信载体(ViewRootImpl 实现 IWindow,WMS 提供 IWindowSession)二、Window 与 WMS 绑定的完整流程(分 6 个核心阶段)整个流程的核心入口是WindowManager.addView(),最终以 WMS 完成 Window 注册并分配 Surface 为绑定完成标志,流程可视化如下:生成失败,请重试阶段 1:前置准备 ——Window 与 WindowManager 初始化(应用进程)这是绑定前的基础工作,Activity 启动时已完成:Activity.attach():创建PhoneWindow实例(Activity 的专属 Window),并通过mWindow = new PhoneWindow(this)完成绑定;PhoneWindow 初始化 WindowManager:PhoneWindow 通过getWindowManager()返回WindowManagerImpl实例(WindowManager 的具体实现);setContentView():给 PhoneWindow 的DecorView加载开发者编写的布局,此时 DecorView 仅完成初始化,未与 WMS 绑定。核心代码(简化):java运行// Activity.java final void attach(...) { mWindow = new PhoneWindow(this); // 创建PhoneWindow mWindowManager = mWindow.getWindowManager(); // 获取WindowManagerImpl } // PhoneWindow.java public WindowManager getWindowManager() { return mWindowManager != null ? mWindowManager : (mWindowManager = createLocalWindowManager()); } private WindowManager createLocalWindowManager() { return new WindowManagerImpl(mContext); // 初始化WindowManagerImpl }阶段 2:触发绑定 ——WindowManager.addView ()(应用进程)Activity 执行onResume()后,系统会触发WindowManager.addView(),这是绑定流程的「启动开关」:WindowManager是「门面类」,真正的逻辑在WindowManagerGlobal(全局单例,管理所有应用 Window)中;核心操作:将 DecorView、LayoutParams 传入,创建ViewRootImpl(应用与 WMS 的核心桥梁)。核心代码(简化):java运行// WindowManagerImpl.java(门面类,转发请求) @Override public void addView(@NonNull View view, @NonNull ViewGroup.LayoutParams params) { applyDefaultToken(params); // 转发给WindowManagerGlobal处理 mGlobal.addView(view, params, mContext.getDisplay(), mParentWindow); } // WindowManagerGlobal.java(核心处理类) public void addView(View view, ViewGroup.LayoutParams params, ...) { // 1. 参数校验:LayoutParams必须是WindowManager.LayoutParams final WindowManager.LayoutParams wparams = (WindowManager.LayoutParams) params; // 2. 关键:为当前Window创建ViewRootImpl(每个Window对应一个ViewRootImpl) ViewRootImpl root = new ViewRootImpl(view.getContext(), display); // 3. 关联View、LayoutParams、ViewRootImpl view.setLayoutParams(wparams); mViews.add(view); // 存储所有Window的View mRoots.add(root); // 存储所有ViewRootImpl mParams.add(wparams); // 存储所有LayoutParams try { // 4. 调用ViewRootImpl.setView(),真正触发与WMS的绑定 root.setView(view, wparams, panelParentView); } catch (RuntimeException e) { // 异常处理:移除已添加的View/ViewRootImpl } }阶段 3:通信准备 ——ViewRootImpl.setView ()(应用进程)ViewRootImpl.setView()是应用进程内的核心准备步骤,完成后将发起跨进程请求:关联 DecorView:将 DecorView 赋值给 ViewRootImpl 的mView成员,作为 Window 的顶级 Vi
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

文档上传网站超级好看的html代码网页

在日常工作与学习中,我们经常会遇到重复繁琐的任务,比如批量处理文件、自动整理数据、定时发送消息等。Python凭借其简洁的语法和丰富的第三方库,成为实现自动化的绝佳工具。本文将分享5个高频实用的Python自动化脚本,涵盖文件处理…

张小明 2025/12/28 8:26:17 网站建设

深圳做网站什么公司好中国物流企业网站建设问题

靠谱的财税服务公司有哪些在企业的发展过程中,财税管理是至关重要的环节,靠谱的财税服务公司能为企业提供专业支持,助力企业健康发展。那么,靠谱的财税服务公司有哪些呢?财税服务的重要性财税服务涵盖了记账、报税、税…

张小明 2025/12/28 8:26:16 网站建设

自己做网站的步骤线下引流的八种推广方式

🎯微软认证:Power BI数据分析师助理,展示与使用 Microsoft Power BI 进行建模、可视化和分析数据的业务和技术要求相一致的方法和实践,是数据分析领域的敲门砖,特别适合想快速入门数据可视化工具的同学💛微…

张小明 2025/12/28 8:26:15 网站建设

德州哪家网站优化公司专业官方购物网站正品

Web动画新纪元:为什么说WebGL是未来交互的终极选择? 【免费下载链接】lottie-web 项目地址: https://gitcode.com/gh_mirrors/lot/lottie-web 在Web技术快速迭代的今天,WebGL以其强大的图形渲染能力和硬件加速特性,正成为…

张小明 2025/12/28 8:26:16 网站建设

合肥门户网站制作建设有了域名和空间怎么做网站内容

微信小程序二维码生成实战指南:3步实现个性化营销码 【免费下载链接】weapp-qrcode Wechat miniapp generate qrcode image 项目地址: https://gitcode.com/gh_mirrors/wea/weapp-qrcode 在移动互联网时代,二维码已成为连接线上线下的重要桥梁。w…

张小明 2025/12/28 8:26:14 网站建设

山西推广型网站制作网站建设报价明细模板

一、 DaemonSet 概述 DaemonSet 控制器能够确保 k8s 集群所有的节点都运行一个相同的 pod 副本,当向 k8s 集群中增加 node 节点时,这个 node 节点也会自动创建一个 pod 副本,当 node 节点从 集群移除,这些 pod 也会自动删除&…

张小明 2025/12/28 8:26:15 网站建设