「安卓framework基础篇4」什么是SurfaceFlinger?(基于AOSP13)

发布时间:2026/10/20 18:34:38
「安卓framework基础篇4」什么是SurfaceFlinger?(基于AOSP13) 「安卓framework基础篇4」什么是SurfaceFlinger(基于AOSP13)前言肯定有人会疑惑为什么开机动画说得好好的突然跳到SurfaceFlinger了因为用户在屏幕上看到的内容最终都是由SurfaceFlinger合成上屏的无论是用Activity和View绘制出来的画面还是用canvas、OpenGL亦或是Vulkan直接画出来的内容最终都是交给Native层的SurfaceFlinger服务来合成并调用hal层驱动显示到屏幕上的。APP开发层面使用Activity、View创建的画面内容虽然必须通过WMS来间接调用SurfaceFlinger但安卓framework层的代码中也有很多地方是通过直接调用SurfaceFligner将画面显示到屏幕上的开机动画就是其中较典型的场景。可以说SurfaceFlinger是framework最底层的图形合成服务并且SurfaceFlinger的设计也很复杂巧妙如果理解了SurfaceFlinger再学WMS可以说手到擒来轻轻松松。如果先学WMS的话很多调用SurfaceFlinger的地方会让人疑惑打击学习的成就感导致学习积极性下降。好了废话不多说我们一起来看一看SurfaceFlinger吧SurfaceFlinger 做了啥例子SurfaceFlinger负责把每个进程对应的显示区域的可见部分合成到一块屏幕上。如上图的例子打开的是一个通讯录APP的自由窗口这个窗口是在壁纸最底下的白底背景就是壁纸、桌面显示app图标的那一层之上的壁纸和桌面被自由窗口覆盖的部分在屏幕上是看不到的但其实在绘制的时候壁纸进程、桌面进程都会把各自的完整图像绘制出来作为一个图层交给SurfaceFlinger最后由SurfaceFlinger根据各个进程图层的位置、层级关系(例如上图的自由窗口画面层级就在桌面和壁纸之上)、透明度将多个图层合成最终要显示到屏幕上的一帧画面。大纲后续将会推出一系列文章来分析SurfaceFlinger合成上屏的过程大致内容如上图大纲所示。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询