当前位置: 首页 > 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.jsqmd.com/news/621405/

相关文章:

  • 小学阶段的核心1000词Ⅰ 身体与健康篇 (Body Health)干词背单词,记得快!
  • SHAP violin plot 自定义配色方案实战
  • ThinkBook16双系统实战:Win11+Ubuntu22.04共存的极简分区方案(附避坑指南)
  • 如何批量创建SQL存储过程_使用脚本自动化部署流程
  • AI民主化:让每个人都能开发AI应用,是理想还是泡沫?
  • 机械识图:第一角投影
  • 【JAVA基础面经】线程安全的单例模式
  • 【Python办公】批量文件重命名
  • 查重一次省百元!PaperXie 四大检测系统,本科生论文通关的省钱秘籍
  • Python机器学习框架对比:从理论到实践
  • rag系统落地化
  • 项目介绍 MATLAB实现基于双向长短期记忆网络(BiLSTM)进行锂电池剩余寿命预测的详细项目实例(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我前行的动
  • 2026年04月10日最热门的开源项目(Github)
  • mysql数据库索引失效的常见原因_分析索引设计与使用误区
  • 查重踩坑退退退!PaperXie 四大查重功能,本科生闭眼过查重关
  • 从CubeMX到AC6:STM32H743的MPU与分散加载文件(.sct)配置避坑全记录(LWIP+FreeRTOS)
  • 怎么为MongoDB事务调优:将读操作尽量移到事务外面执行
  • 2026-04-11 全国各地响应最快的 BT Tracker 服务器(电信版)
  • 2026年新型隔墙板厂家选购指南:预制隔墙板/ALC板材/ALC蒸压加气混凝土条板/ALC隔墙板/GRC轻质隔墙板/选择指南 - 优质品牌商家
  • Programming Fog:面向雾化控制的Arduino轻量级硬件抽象库
  • LangChain模块(四)Chains工作流编排核心
  • Shadow:Advisor 工具,这才是我们要学习的好架构模式
  • 基本数据类型(小数/浮点数)
  • 知识图谱增强的大语言模型推理:从思维链到动态知识融合
  • 鸿蒙 数据库构建查询条件:greaterThan
  • 动态规划之【树形DP】第2课:树形DP应用案例实践1
  • LangChain模块(五)Memory让模型拥有上下文记忆
  • 第2讲:C语言数据类型和变量
  • 鹏哥c语言复习第十一讲----指针1基础概念
  • 查重不用愁!PaperXie 四大检测模块,一站式解决论文重复率 + AIGC 率难题