news 2026/5/1 11:42:16

Android 渲染(二):Choreographer、SurfaceFlinger、HWComposer

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android 渲染(二):Choreographer、SurfaceFlinger、HWComposer

Choreographer

作用:

  • 负责接收和处理 App 的各种更新消息和回调,等到 Vsync 到来的时候统一处理。比如集中处理 Input(主要是 Input 事件的处理) 、Animation(动画相关)、Traversal(包括 measure、layout、draw 等操作) ,判断卡顿掉帧情况,记录 CallBack 耗时等
  • 负责请求和接收 Vsync 信号。接收 Vsync 事件回调(通过 FrameDisplayEventReceiver.onVsync );请求 Vsync(FrameDisplayEventReceiver.scheduleVsync)

重要方法:

  • onVSync:Choreographer 的内部类 FrameDisplayEventReceiver.onVsync 负责接收 Vsync 回调,通知 UIThread 进行数据处理。
  • doFrame:处理绘制的逻辑核心
    • 计算掉帧逻辑
    • 记录帧绘制信息
    • 当收到 Vsync 信号时,执行使用者通过 postCallback 设置的五种类型的回调
      • CALLBACK_INPUT : 处理输入事件处理有关
      • CALLBACK_ANIMATION : 处理 Animation 的处理有关
      • CALLBACK_INSETS_ANIMATION : 处理 Insets Animation 的相关回调
      • CALLBACK_TRAVERSAL : 处理和 UI 等控件绘制有关
      • CALLBACK_COMMIT : 处理 Commit 相关回调,主要是是用于执行组件 Application/Activity/Service 的 onTrimMemory,在 ApplicationThread 的 scheduleTrimMemory 方法中向 Choreographer 插入的;另外这个 Callback 也提供了一个监测一帧耗时的时机

SurfaceFlinger

  • 状态栏和导航栏由系统进程渲染,而应用层由应用渲染,两者之间不进行协调。(默认主屏幕应用有一个单独的壁纸层)。
  • SurfaceFlinger 最主要的功能是接受来自多个来源的数据缓冲区,对它们进行合成,然后发送到显示设备。
  • SurfaceFlinger 必须始终显示内容,因此它会保留一个缓冲区。如果在某个层上没有提交缓冲区,则该层会被忽略。
  • SurfaceFlinger 在收集可见层的所有缓冲区之后,便会询问 Hardware Composer 应如何进行合成。

HWComposer(Hardware Composer HAL)

  • 由显示设备硬件原始设备制造商 (OEM) 完成,用于通过可用硬件来合成缓冲区
  • SurfaceFlinger 向 HWC 提供一个完整的层列表
  • 运行 Android 4.4 或更高版本的设备通常支持 4 个叠加平面。尝试合成的层数多于叠加层数会导致系统对其中一些层使用 GLES 合成,这意味着应用使用的层数会对能耗和性能产生重大影响。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 21:20:28

comfyui基础操作

comfyui基础操作1. ComfyUI SeedVR2新旧插件共存解决方案1. ComfyUI SeedVR2新旧插件共存解决方案 ComfyUI SeedVR2新旧插件共存解决方案

作者头像 李华
网站建设 2026/5/1 9:41:21

在Apple Silicon Mac上运行iOS应用的终极指南:PlayCover完全配置手册

在Apple Silicon Mac上运行iOS应用的终极指南:PlayCover完全配置手册 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover 想要在Mac上畅玩原神、体验抖音,或是使用iOS专属应用吗&am…

作者头像 李华
网站建设 2026/5/1 11:13:26

MinerU软件版本升级完全指南:实现平滑系统迁移

MinerU软件版本升级完全指南:实现平滑系统迁移 【免费下载链接】MinerU A high-quality tool for convert PDF to Markdown and JSON.一站式开源高质量数据提取工具,将PDF转换成Markdown和JSON格式。 项目地址: https://gitcode.com/GitHub_Trending/m…

作者头像 李华
网站建设 2026/4/22 1:34:01

ComfyUI智能裁剪缝合:局部图像修复的高效解决方案

ComfyUI智能裁剪缝合:局部图像修复的高效解决方案 【免费下载链接】ComfyUI-Inpaint-CropAndStitch ComfyUI nodes to crop before sampling and stitch back after sampling that speed up inpainting 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Inpa…

作者头像 李华
网站建设 2026/5/1 8:39:10

造纸厂上下游情况解析:从废纸到纸箱,形成一条绿色产业链

造纸行业看起来比较传统,实际上却连接着庞大的上下游体系,贯穿了资源回收、化工、包装、印刷等多个领域。上游:原料与辅料的供应造纸的核心原料主要有两类:木浆(来源于林木)和废纸(回收的纸品&a…

作者头像 李华
网站建设 2026/5/1 9:20:16

智能家居防火报警器他的功能如果实现

智能家居防火报警器通过智能传感、联网通信、平台分析与自动化执行这四大核心功能模块的协同工作,来实现远超传统报警器的功能。为了让你直观地理解其工作原理,下图清晰地展示了信息从感知、分析到最终行动的完整流程:🔍 核心功能…

作者头像 李华