当前位置: 首页 > news >正文

Flutter OH 性能分析-滑动响应时延

本篇文章针对 Flutter OH 应用的滑动场景,进行响应时延的trace分析。请务必先看完这篇指南 Flutter OH 性能分析第一步-梳理线程顺序再继续。

准备条件

  • 了解并能使用性能分析工具DevEco Studio Profiler
  • 了解线程渲染顺序(Flutter OH 性能分析第一步-梳理线程顺序)

1. 手指按下

手指按下是所有点击或滑动事件的大前提,可以知道手指坐标的初始位置和触摸哪个控件等重要信息。

mmi_service线程负责触发多模交互事件,由Flutter应用监听和响应触摸事件。

手指按下的触摸事件,会立即转发给Flutter应用。

在mmi_service线程的"package touchEvent"的trace后面的下一个trace,可以看到"service report touchId:编号, type: down"的trace,type为down,说明是手指按下的触摸事件。而在应用主线程,有"DispatchTouchEvent"的trace,上面有详细坐标打印和触摸事件类型,type数值为0,说明是手指按下的触摸事件。这两个线程上的trace是对应的。

2.手指滑动

手指滑动的触摸事件,不会立即转发给Flutter应用,而是由vsync-app信号来控制发送。

和手指按下的trace一样,mmi_service线程和应用主线程都有一样的trace可以对应,只是type类型不一样。type为move,数值为2。

手指滑动的触摸事件需通过flutterSyncName的vsync-app信号触发,之后才能传递到flutter应用主线程。因此,时间顺序是,mmi_service到VSyncGennerator,再到DVSync-app,最后到应用主线程。trace顺序如下图:

  • 注意:第一个手指滑动的触摸事件的坐标点和手指按下的触摸事件的坐标点是一样的。

3.滑动阈值 TouchSlop

TouchSlop是系统所能识别的滑动的最小距离,是一个阈值,称为滑动阈值。用户可以自定义设置控件的滑动阈值,系统默认值是18。

那么通过查看应用主线程的触摸事件trace的坐标,可以自行计算坐标偏移量是否达到滑动阈值。

4.滑动首帧

当手指滑动的触摸事件的滑动距离超过设定的滑动阈值时,Flutter应用会触发update操作。但是,实际的绘制操作需要等待下一帧的到来才能执行。所以滑动开始的第一帧渲染,会在触摸事件满足滑动条件后,还需等待一帧的延迟。

trace如下图:

5.首帧渲染

渲染的大致过程看Flutter OH性能分析-帧渲染跟踪,需要准确找到对应的trace。

帧渲染的结束是在RS进程的RSHardwareThread线程上,但是在自动化测试的时候,帧渲染的结束标识是dpu_gfx_primary线程。(dpu_gfx_primary只是一个硬件信号,不详细讲解)

trace如下图:

所以从mmi_service线程的手指按下的trace开始,到滑动首帧渲染结束,这花费的时间就是滑动响应时延。

http://www.cnnetsun.cn/news/1814278.html

相关文章:

  • FlashStringTable:嵌入式Arduino的PROGMEM字符串高效管理方案
  • DETR注意力权重可视化实战:从原理到代码实现
  • 为什么87%的AI项目卡在MVP之后?:2026技术雷达图暴露5个被低估的工程化盲区
  • LMDB数据库高效操作指南 —— 图像与标签的批量处理技巧
  • 从零搭建工业EtherCAT主站:基于IGH 1.5.2的Linux内核模块编译与配置避坑指南
  • 解决Photoshop WebP格式兼容性痛点的WebPShop插件深度解析
  • IndexTTS-2-LLM在教育培训场景的应用:生成生动有趣的讲解语音
  • 使用钉钉远程操作你的claude code寺
  • Veo 3.1 AI 视频生成 + 字幕叠加完整实战指南
  • 最近在折腾工业仿真模型的时候,发现六层结构真是个神奇的存在。特别是手头有1200系列和1500系列设备的朋友,这两个系列的兼容性差异值得好好唠唠
  • springboot 微信小程序的线上水果店购物商城多商家
  • C# MemoryStream 实战技巧:从基础到高效内存管理
  • EmojiOne Color彩色字体:终极免费表情解决方案
  • 2026软文推广新篇:邯郸市佳铭文化解锁价值重塑与全域增长密码
  • 南航学位论文LaTeX模板:告别格式烦恼的终极解决方案
  • 2026年AI超级员工系统品牌大比拼,谁是行业口碑王?
  • Windows Server 多域间访问实施文档
  • 多功能空调控制系统的设计(有完整资料)
  • 怎么给word一键标注拼音?5款无坑工具,家长老师秒上手
  • APEX-Agents基准测试:揭开智能体时代AI的真实困境与挑战
  • 如何用SQL在保持明细的同时展示汇总值_巧用OVER子句
  • Unity集成puerTS与TypeScript实战:从零搭建热更新开发环境
  • M95系列SPI EEPROM嵌入式驱动库详解与工业级应用
  • 电源拓扑中关键元件电流有效值的计算与优化策略
  • 【AI原生研发成本效益黄金模型】:20年架构师首次公开5大动态因子量化公式与ROI预测看板
  • Soldered CAN FD库:Arduino快速接入MCP2518FD驱动指南
  • 商用烤鱼炉技术强的公司
  • AH8453降压芯片在车载电子中的高效12V转5V应用方案
  • Arduino PWM实战:用示波器调试电机速度控制(附代码)
  • USB HID设备开发避坑指南:基于STM32F4的鼠标键盘事件回调详解