Android图形架构详解:从启动到显示全过程
Android图形架构是Android操作系统中实现视图绘制和窗口管理的核心组成部分。它涉及多个组件和服务之间的交互,确保应用程序界面的高效呈现。本文将详细探讨这一架构的主要步骤和涉及的关键组件。 1. **启动新Activity**: 当用户点击一个应用程序中的启动按钮或从任务切换器选择时,系统会调用`ActivityManagerService.startActivity()`,这是Activity Manager服务处理启动请求的起点。它负责启动一个新的Activity实例,并将其添加到活动栈中。 2. **创建新窗口并注册**: 在启动新Activity后,会通过`Activity.attach()`调用`PolicyManager.makeNewWindow()`,这一步骤会为Activity创建一个新的窗口,并将其注册到`WindowManagerService`。`WindowManagerService`是Android的核心组件,它管理所有应用程序的窗口显示和布局。 3. **创建新Surface**: 每个Activity的窗口需要一个Surface,这是硬件和软件之间的桥梁,用于绘制视图。`ViewRoot`会负责创建这个Surface,并在`WindowManagerService`中注册。`WindowManagerService`接着调用`WindowState.createSurfaceLocked()`,通过`SurfaceFlinger`创建Surface。 4. **视图层次渲染**: `ViewRoot`会将Activity的视图层次(例如`DecorView`、`ContentView`、`TextView`等)绘制到新创建的Surface上。这是一个递归的过程,从根视图开始,然后是子视图,直至所有的视图都被绘制完成。视图的测量、布局以及绘制都是在这个阶段进行的。 5. **合成显示**: 完成所有视图的绘制后,`ViewRoot`将所有可见的off-screen Surfaces(即不在屏幕上的但可能需要后续显示的Surfaces)组合到一起,然后提交到`Display`层。这个过程由`SurfaceFlinger`的`addLayer_l()`方法负责,它是一个关键的图形合成服务,负责将视图更新显示到屏幕上。 在整个过程中,`SurfaceFlinger`作为独立于主线程的服务运行在`ProcessC`中,它负责底层的图形硬件操作,如缓冲区管理、窗口渲染和屏幕刷新。`App`通常通过Zygote创建的子进程`ProcessB`来与`SurfaceFlinger`交互,传递数据和指令。 总结来说,Android图形架构的运作机制涉及到ActivityManager、WindowManagerService、SurfaceFlinger等多个服务之间的紧密协作,确保了Android设备上应用程序界面的流畅和高效显示。理解这些组件的工作原理对于开发高性能的Android应用至关重要。
![预览](https://dl-preview.csdnimg.cn/9412507/0004-c7b31db8a863558e3c8a0a8465812669_preview.png)
剩余18页未读,继续阅读
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/1f7eab10623b4770a1244e9315b6aa1d_zhao_zepeng.jpg!1)
- 粉丝: 1087
- 资源: 14
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 多模态联合稀疏表示在视频目标跟踪中的应用
- Kubernetes资源管控与Gardener开源软件实践解析
- MPI集群监控与负载平衡策略
- 自动化PHP安全漏洞检测:静态代码分析与数据流方法
- 青苔数据CEO程永:技术生态与阿里云开放创新
- 制造业转型: HyperX引领企业上云策略
- 赵维五分享:航空工业电子采购上云实战与运维策略
- 单片机控制的LED点阵显示屏设计及其实现
- 驻云科技李俊涛:AI驱动的云上服务新趋势与挑战
- 6LoWPAN物联网边界路由器:设计与实现
- 猩便利工程师仲小玉:Terraform云资源管理最佳实践与团队协作
- 类差分度改进的互信息特征选择提升文本分类性能
- VERITAS与阿里云合作的混合云转型与数据保护方案
- 云制造中的生产线仿真模型设计与虚拟化研究
- 汪洋在PostgresChina2018分享:高可用 PostgreSQL 工具与架构设计
- 2018 PostgresChina大会:阿里云时空引擎Ganos在PostgreSQL中的创新应用与多模型存储
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)