news 2026/6/9 9:19:16

Android 渲染(一):刷新机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android 渲染(一):刷新机制

概念

  • 硬件
    • CPU:三大绘制流程中Surface的计算。
    • GPU:以SurfaceFlinger服务的形式工作,将CPU计算好的Surface数据合成后放到buffer中,让显示器进行读取
    • 屏幕刷新率:屏幕在1s内去buffer中取数据的次数,单位为HZ。主流屏幕刷新频率是每秒60次,高的有90,120等。
  • 软件
    • 60 fps 的意思是说,画面每秒更新 60 次,也就是 16.67 ms 刷新一次
    • FPS 则是由 Vsync 来控制的,Vsync 是通过 Choreographer 来控制应用刷新的频率的。
    • 每隔 16.6 ms,Vsync 信号到来唤醒 Choreographer 来做 App 的绘制操作。
    • Vsync 信号到来的时候,Choreographer 借助 Message 机制开始一帧的绘制工作

用户感知

  • 卡顿:如果主线程 + 渲染线程每一帧的执行都超过 16.6ms(60fps 的情况下),那么就可能会出现掉帧、丢帧。如果是APP端没有及时渲染,而BufferQueue中还有未消费的缓冲,可能就不会有掉帧现象。
  • 画面撕裂:帧率和屏幕刷新率的不一致导致的,不会丢失。
  • ANR:如果界面线程被阻塞超过几秒钟时间(根据组件不同 , 这里的阈值也不同),用户会看到 “应用无响应” (ANR) 对话框(部分厂商屏蔽了这个弹框,会直接 Crash 到桌面)

刷新机制

  • Android 4.1加入垂直同步技术(VSYNC),以及三重缓冲技术(Triple Buffer)
  • VSync(垂直同步信号)(Vsync-App Vsync-SF lockAsync)
    • 硬件屏幕保持固定频率会发出的一个脉冲信号
    • 提醒CPU立即进入屏幕绘制过程;提醒GPU进行buffer的交换
    • Vsync-SF:将所有准备好的 Buffer 取出进行合成
  • Triple Buffer
    • 一个用于GPU的合成,一个用于屏幕的刷新,一个在Jank时最大限度避免CPU空闲。Jank可能掉帧。
    • 会有前后交换buffer,没有准备好的情况Jank。此时,需要第三个buffer最大限度避免CPU空闲的情况。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 19:49:17

炉石传说自动化脚本新手入门:从零开始的全流程指南

炉石传说自动化脚本新手入门:从零开始的全流程指南 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本)(2024.01.25停更至国服回归) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-S…

作者头像 李华
网站建设 2026/6/6 7:47:25

第一章——办公自动化之Excel拆分工具:精准处理数据,提升办公效能

在办公场景中,我们常常会遇到大型的Excel文件,为了更方便地对数据进行管理和分析,有时需要根据特定条件将其拆分成多个小文件。例如,人力资源部门有一份包含全公司员工信息的Excel文件,为了便于各部门分别处理本部门员…

作者头像 李华
网站建设 2026/6/6 22:54:16

创客匠人峰会深度解析:知识变现的 “IP 资产化” 革命 —— 从 “运营流量” 到 “沉淀资产” 的长期增长逻辑

引言:峰会核心命题 ——AI 时代知识变现的终极形态是 “IP 资产化”2025 年 11 月 22 日 - 25 日,创客匠人主办的 “全球创始人 IPAI 万人高峰论坛” 在厦门海峡大剧院圆满落幕。这场汇聚 10000 余名全球创始人的盛会,以 “AI 重构生产力&…

作者头像 李华
网站建设 2026/6/5 2:48:23

LoRaWAN网络,如何提升现代建筑的智慧服务能力?

物联网时代革命下,万事万物都被赋予了感知与沟通的“生命力”,无论是拔地而起的摩天大厦,还是横跨江海的宏伟长桥,它们都可以通过配置物联网技术达成“物与物、物与人”之间的无缝交互,让管理者可以快速获取到这些建筑…

作者头像 李华
网站建设 2026/6/9 6:58:38

FTXUI动态布局:掌握ResizableSplit的5个实战技巧

FTXUI动态布局:掌握ResizableSplit的5个实战技巧 【免费下载链接】FTXUI :computer: C Functional Terminal User Interface. :heart: 项目地址: https://gitcode.com/gh_mirrors/ft/FTXUI 在现代终端应用开发中,灵活的用户界面布局是提升工作效率…

作者头像 李华
网站建设 2026/6/8 23:45:10

9、高效Shell脚本编写与模块化调试指南

高效Shell脚本编写与模块化调试指南 1. xargs命令的使用 xargs命令用于从标准输入构建并执行命令行。像cp、echo、rm、wc等命令,不会从标准输入或其他命令的重定向输出获取输入,这时可以使用xargs将其他命令的输出作为输入提供给这些命令。其语法如下: xargs [option]部…

作者头像 李华