Android Perfetto 系列 6:为什么是 120Hz?高刷新率的优势与挑战
Android Perfetto 系列 6为什么是 120Hz高刷新率的优势与挑战本文是 Android Perfetto 系列的第六篇主要介绍 Android 设备上 120Hz 刷新率的相关知识。如今120Hz 已成为 Android 旗舰手机的标配本文将讨论高刷新率带来的优势和挑战以及从系统角度解析 120Hz 的工作原理。在过去的几年中移动设备的屏幕刷新率经历了从 60Hz 到 90Hz再到现在普遍的 120Hz 的演进过程。这种提升不仅带来了更流畅的视觉体验也对系统架构和应用开发提出了新的要求。通过 Perfetto 工具我们可以更直观地理解高刷新率设备上帧渲染的过程和性能表现。系列文章目录1Android Perfetto 系列目录[1]2Android Perfetto 系列 1Perfetto 工具简介[2]3Android Perfetto 系列 2Perfetto Trace 抓取[3]4Android Perfetto 系列 3熟悉 Perfetto View[4]5Android Perfetto 系列 4使用命令行在本地打开超大 Trace[5]6Android Perfetto 系列 5Android App 基于 Choreographer 的渲染流程[6]7Android Perfetto 系列 6为什么是 120Hz高刷新率的优势与挑战[7]8Android Perfetto 系列 7 - MainThread 和 RenderThread 解读[8]9Android Perfetto 系列 8深入理解 Vsync 机制与性能分析[9]10Android Perfetto 系列 9 - CPU 信息解读[10]11Android Perfetto 系列 10 - Binder 调度与锁竞争[11]12视频(B站) - Android Perfetto 基础和案例分享[12]13视频(B站) - Android Perfetto 分享 - 出图类型分享AOSP、WebView、Flutter OEM 系统优化分享[13]如果大家还没看过 Systrace 系列下面是传送门1Systrace 系列目录[14] 系统介绍了 Perfetto 的前身 Systrace 的使用并通过 Systrace 来学习和了解 Android 性能优化和 Android 系统运行的基本规则。2个人博客[15]个人博客主要是 Android 相关的内容也放了一些生活和工作相关的内容。欢迎大家在 关于我[16]页面加入微信群或者星球讨论你的问题、你最想看到的关于 Perfetto 的部分以及跟各位群友讨论所有 Android 开发相关的内容基本概念什么是屏幕刷新率屏幕刷新率是一个硬件概念指的是屏幕每秒钟刷新显示内容的次数单位是赫兹Hz。•60Hz 屏幕每秒刷新 60 次每次刷新间隔约 16.67ms•90Hz 屏幕每秒刷新 90 次每次刷新间隔约 11.11ms•120Hz 屏幕每秒刷新 120 次每次刷新间隔约 8.33ms屏幕刷新率决定了显示设备能够展示的最高帧率但屏幕只负责按固定频率显示内容具体显示什么内容由软件系统决定。什么是 FPSFPSFrames Per Second是一个软件概念指的是系统每秒生成多少帧内容提供给屏幕显示。•60FPS系统每秒生成 60 帧内容每帧有约 16.67ms 的处理时间•90FPS系统每秒生成 90 帧内容每帧有约 11.11ms 的处理时间•120FPS系统每秒生成 120 帧内容每帧有约 8.33ms 的处理时间为了获得最佳的视觉体验FPS 应该与屏幕刷新率匹配。如果 FPS 低于刷新率会出现掉帧如果 FPS 高于刷新率多余的帧会被丢弃造成资源浪费。为了获得最佳的视觉体验理想情况下 FPS 应该与屏幕刷新率匹配但实际体验与内容类型和用户感知紧密相关1内容类型差异2视频内容电影24fps或视频30fps即使在 120Hz 屏幕上也能看起来流畅这是因为视频内容包含自然运动模糊且符合观看者对该媒介的预期3交互式界面而滑动列表、动画等交互场景对帧率要求更高从 120fps 降到 110fps 都可能被用户感知为卡顿⚡ 帧率稳定性 帧率高低稳定的低帧率如稳定的 60fps通常比不稳定的高帧率如在 90-120fps 之间波动体验更好1系统行为2当 FPS 低于刷新率时显示系统会复用帧或插入黑帧3当 FPS 高于刷新率时多余的帧会被丢弃造成计算资源浪费不同应用场景有不同的流畅度标准开发者需要根据应用类型选择合适的优化策略。什么是 VsyncVsync垂直同步是将软件帧率与屏幕刷新率同步的机制目的是避免画面撕裂现象。Android 系统中Vsync 信号被用来触发应用渲染新一帧的时机确保渲染过程与屏幕刷新周期保持一致。为什么 120Hz 成为新标准市场从 60Hz 到 90Hz再到 120Hz 的演进有着明确的技术和用户体验驱动因素1更高的流畅度120Hz 比 60Hz 提供了两倍的视觉信息使滑动、动画等交互感觉更加流畅自然。2减少延迟输入事件到显示结果的延迟从 60Hz 的 16.67ms 减少到 120Hz 的 8.33ms让用户操作反馈更及时。3硬件支持成熟现代移动处理器如高通骁龙 8 系列、联发科天玑系列已经有足够性能支持 120Hz 的稳定运行。4电池技术进步更高效的电池和电源管理技术缓解了高刷新率带来的功耗压力。5可变刷新率技术LTPO 等自适应刷新率技术允许设备在不同场景下智能切换刷新率平衡流畅度和功耗。如今120Hz 不仅是 Android 旗舰机型的标配连 iOS 设备iPhone 13 Pro 及以上也已支持 120Hz 的 ProMotion 技术标志着高刷新率已成为高端移动设备的基本特性。系统实现与工作原理Perfetto 视角下的 120Hz 渲染流程在 120Hz 刷新率下Android 系统的渲染流程没有本质变化主要区别是每一帧的时间预算从 16.67ms 缩短到了 8.33ms (当然这里没有讨论 App duration如果 App Duration 配置大于 8.33ms那么 App 的 UI Render 在 App duration 区间完成都是可以的注意 每个机器的 App Duration 配置不一样。下图展示了 120Hz 环境下应用渲染的 Perfetto 追踪图120Hz 环境下应用渲染的 Perfetto 追踪图在 120Hz 设备上我们可以看到1Vsync 间隔VSYNC 信号每 8.33ms 触发一次2帧处理流程每一帧的处理依然遵循 Input → Animation → Traversal 的顺序3时间压缩所有处理步骤必须在更短的时间内完成对系统和应用性能要求更高上图中出现了两个 Buffer 相关的 Trace这里做一个简单的说明1QueuedBuffer例如QueuedBuffer - VRI[ImproveSnsTimelineUI]#748BLAST#7482这个 Trace Tag 是在App 进程中打印的3表示应用完成一帧渲染后将渲染好的 Buffer 放入队列准备提交给 SurfaceFlinger4在使用 BlastBufferQueue 的系统中这个时刻标志着 RenderThread 完成渲染并准备将结果传输到系统服务5BufferTX例如BufferTX - com.tencent.mm/com.tencent.mm.plugin.sns.ui.improve.ImproveSnsTimelineUI#479746这个 Trace Tag 是在SurfaceFlinger 进程中打印的7表示 SurfaceFlinger 接收到应用传来的 Buffer 并开始处理的时刻8TX 代表 Transfer/Transmission即缓冲区的传输过程 Buffer 流转的完整流程1. App 的 RenderThread 调用 queueBuffer此时 App 认为自己已交出一个 Buffer于是 QueuedBuffer **1** 2. 该 Buffer 被传输给 SFSF 接收latch/acquire后BufferTX **1** 3. SF 在未来的某个 Vsync 周期使用这个 Buffer 完成合成并上屏 4. 当 SF 不再需要这个 Buffer 时SF 会释放release这个 Buffer 5. SF 释放 Buffer 后BufferTX **-1**。同时App 会收到 Buffer 已被释放的回调此时 App 端的 QueuedBuffer **才会 -1**表示这个 Buffer 已成功返回缓冲池可被再次使用Perfetto 同时也提供了 Buffer 追踪的功能点击 App 上面的 Actual Timeline 这部分知识可以看 Actual Timeline 介绍[17]就可以看到这个 Buffer 从生产到消费的全过程。Perfetto 中 Buffer 从生产到消费的全过程追踪支撑 120Hz 的系统架构优化要流畅地支持 120Hz 高刷新率Android 系统架构做了不少调整和改进。这些变化涉及多个组件也包括了对整个渲染管线的重要优化。下面我们来详细看看几个关键的技术点自适应刷新率技术现代 Android 设备采用多层次刷新率管理策略•硬件层支持LTPO低温多晶氧化物显示技术允许屏幕在 1Hz 到 120Hz 范围内精确调节刷新率而非固定档位切换•内容感知算法系统通过分析屏幕内容类型自动调整刷新率•静态内容阅读、图片浏览降至 10-30Hz•视频播放匹配视频源帧率通常 24-60Hz•滚动和交互提升至 90-120Hz•游戏根据游戏引擎输出帧率动态调整•API 支持Android 提供Surface.setFrameRate()API允许应用明确指定其首选帧率系统会尽可能满足这一请求// 应用可以指定首选帧率和刷新率行为 surface.setFrameRate(60.0f, Surface.FRAME_RATE_COMPATIBILITY_DEFAULT);120Hz 的优势与挑战120Hz 带来的体验提升我拿到第一台120Hz手机的时候最直观的感受就是1一切操作都变得更流畅从桌面滑动、应用切换到刷微博画面更新更频繁内容跟随手指移动也更加精准。尤其在快速滑动朋友圈或微博feed流时文字依然清晰可辨而不是一片模糊。2游戏体验大幅提升玩《王者荣耀》或《和平精英》这类竞技游戏时画面流畅度提升让我的操作精准度也跟着提高。在激烈对抗中能提前8ms看到敌人动作虽然时间很短但确实能带来优势。3眼睛疲劳感减轻这点可能是个人感受但长时间盯着120Hz屏幕确实比60Hz舒适特别是阅读和滑动内容时眼睛追踪内容的负担减轻了。4触控体验更精准120Hz不仅是显示更新快触控采样率通常也会提高让操作响应更及时无论是打字还是精细控制都更准确。120Hz 面临的实际问题当然高刷屏幕也带来了一系列技术挑战1功耗问题实测中同一台手机在120Hz模式下比60Hz大约多耗电15-20%。对于本就紧张的手机续航来说这是不小的压力。2开发门槛提高原来在60Hz环境下勉强能跑的应用到了120Hz可能就会显得卡顿。每帧只有8.33ms的处理时间对开发者的代码效率提出了更高要求。3发热增加长时间运行高帧率游戏手机发热明显比60Hz更严重这不仅影响体验还可能导致性能降频。⚠️ 应用适配现状很多应用并未针对高刷做优化即使在120Hz屏幕上实际输出帧率可能还是60fps浪费了屏幕潜力。思考与展望按需调整从 ProMotion 看刷新率的智能管理随着 120Hz 高刷新率逐渐成为旗舰手机的标配一个值得思考的问题是我们真的需要在所有场景下都保持 120Hz 的刷新率吗苹果的 ProMotion 技术实际上给出了一个更为合理的答案只有在真正需要高感知度的动画场景下才激活高刷新率而在其他场景则可以适当降低刷新率以节省电量。iOS ProMotion 技术为不同动画场景推荐的帧率配置从上图可以看到苹果在iOS开发文档中为不同类型的动画场景提供了非常精细的ProMotion帧率推荐配置1高影响力动画High-impact animations2适用场景全屏转场如照片应用中点击缩略图展开、第一人称游戏、Sheet弹出展示等3推荐帧率80-120Hz首选120HzCAFrameRateRange(minimum:80, maximum:120, preferred:120)4使用建议谨慎使用仅在关键交互场景应用以减少电量消耗5透明度/颜色过渡和微小移动6适用场景开关状态变化、进度指示器旋转、背景模糊效果等7推荐帧率使用系统默认帧率范围CAFrameRateRange.default8使用建议这类动画不需要过高帧率视觉效果差异不大9低速小动画10适用场景时钟指针移动、缓慢进度条等11推荐帧率根据动画速度可选择8-15Hz、15-24Hz或30-48Hz不等12使用建议低帧率在这些场景下视觉效果已足够好同时可显著节省电量13其他所有情况14推荐使用系统默认帧率⚡ 智能帧率管理的核心思路在用户感知敏感的场景使用高刷新率在用户感知不敏感的场景降低刷新率。这种精细化的帧率管理策略不仅让系统能够在用户体验和电池寿命之间取得最佳平衡也为开发者提供了明确的指导。电量与体验的权衡测试表明将刷新率从 120Hz 降至 60Hz 可节省约 10-15% 的电量。智能地控制刷新率能在保持良好用户体验的同时显著延长电池续航时间。120Hz 的主要价值在于提升交互流畅度和响应速度而非始终保持高刷新率。更智能的做法是根据实际需求动态调整。开发者的适配策略应用开发者应当意识到并非所有内容都需要以最高帧率渲染。通过 Android 提供的 API如 Surface.setFrameRate()可以为不同内容类型指定合适的帧率配合系统的自适应刷新率机制共同达到最佳的性能与电量平衡。总之未来高刷新率技术的发展方向应该是更加智能、更加精细的自适应调节而非简单地追求更高的数字。真正的技术进步是在用户无感知的情况下在体验和能效之间找到最佳平衡点。结论回顾过去几年高刷屏幕的发展我认为120Hz确实是手机交互体验的一次重要跃升。虽然它带来了功耗和开发复杂性等挑战但好处是显而易见的更流畅的体验、更低的输入延迟、更自然的动画效果。对于开发者而言Perfetto这类工具让我们能够看清120Hz下的性能问题有的放矢地进行优化。虽然从16ms减少到8ms的预算听起来很紧张但事实上主流处理器已经有足够能力应对这个挑战。只要合理规划UI复杂度、避免主线程阻塞流畅的120fps体验是完全可以实现的。从趋势来看我不认为手机屏幕刷新率会无限攀升。120Hz可能会在相当长的时间内成为标准而未来的焦点将更多放在如何智能化地调整刷新率在不同场景下找到体验和功耗的最佳平衡点。毕竟我们追求的不是数字上的高而是实际体验的好。关于作者交流与讨论欢迎到知乎、掘金或微信群交流讨论 Android 性能优化相关话题。1博主个人介绍[18]里面有个人的微信和微信群链接。2本博客内容导航[19]个人博客内容的一个导航。3个人整理和搜集的优秀博客文章 - Android 性能优化必知必会[20]欢迎大家自荐和推荐 微信私聊即可4Android性能优化知识星球[21] 欢迎加入多谢支持一个人可以走的更快 , 一群人可以走的更远参考链接[1] Android Perfetto 系列目录: https://www.androidperformance.com/2024/03/27/Android-Perfetto-101/#/Perfetto-%E7%B3%BB%E5%88%97%E7%9B%AE%E5%BD%95[2] Android Perfetto 系列 1Perfetto 工具简介: https://www.androidperformance.com/2024/05/21/Android-Perfetto-01-What-is-perfetto/[3] Android Perfetto 系列 2Perfetto Trace 抓取: https://www.androidperformance.com/2024/05/21/Android-Perfetto-02-how-to-get-perfetto/[4] Android Perfetto 系列 3熟悉 Perfetto View: https://www.androidperformance.com/2024/05/21/Android-Perfetto-03-how-to-analysis-perfetto/[5] Android Perfetto 系列 4使用命令行在本地打开超大 Trace: https://www.androidperformance.com/2025/02/08/Android-Perfetto-04-Open-Big-Trace-With-Command-Line/[6] Android Perfetto 系列 5Android App 基于 Choreographer 的渲染流程: https://www.androidperformance.com/2025/03/26/Android-Perfetto-05-Chorergrapher/[7] Android Perfetto 系列 6为什么是 120Hz高刷新率的优势与挑战: https://www.androidperformance.com/2025/04/26/Android-Perfetto-06-Why-120Hz/[8] Android Perfetto 系列 7 - MainThread 和 RenderThread 解读: https://androidperformance.com/2025/08/02/Android-Perfetto-07-MainThread-And-RenderThread/[9] Android Perfetto 系列 8深入理解 Vsync 机制与性能分析: https://androidperformance.com/2025/08/05/Android-Perfetto-08-Vsync/[10] Android Perfetto 系列 9 - CPU 信息解读: https://www.androidperformance.com/2025/11/12/Android-Perfetto-09-CPU/[11] Android Perfetto 系列 10 - Binder 调度与锁竞争: https://www.androidperformance.com/2025/11/16/Android-Perfetto-10-Binder/[12] 视频(B站) - Android Perfetto 基础和案例分享: https://www.bilibili.com/video/BV1oi82efE4D/?vd_source0c6d2191e785de0a36dc21a9da7e664e[13] 视频(B站) - Android Perfetto 分享 - 出图类型分享AOSP、WebView、Flutter OEM 系统优化分享: https://www.bilibili.com/video/BV17A6bBLECu/[14] Systrace 系列目录: https://www.androidperformance.com/2019/05/26/Android_Systrace_0/#/%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95[15] 个人博客: https://www.androidperformance.com/[16] 关于我: https://www.androidperformance.com/about/[17] Actual Timeline 介绍: https://www.androidperformance.com/2024/05/21/Android-Perfetto-01-What-is-perfetto/#Vsync-App-%E6%B2%A1%E9%82%A3%E4%B9%88%E7%9B%B4%E8%A7%82[18] 博主个人介绍: https://www.androidperformance.com/about/[19] 本博客内容导航: https://androidperformance.com/2019/12/01/BlogMap/[20] 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会: https://androidperformance.com/2018/05/07/Android-performance-optimization-skills-and-tools/[21] Android性能优化知识星球: https://www.androidperformance.com/2023/12/30/the-performance/
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2456729.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!