目录

滑动翻页时动效卡顿不流畅

问题现象

阅读文档场景下,左右滑动翻页时丢帧,帧率低。

背景知识

问题定位

  1. 使用DevEco Profiler Frame模板抓取滑动翻页过程的Trace信息,根据User Events(用户交互事件)和应用接收Vsync信号处理的Trace关键字H:ReceiveVsync确定左右滑动翻页的大致范围,查看render_service泳道中的H:PreferredFrameRate可知当前屏幕刷新率为120Hz,通过Present Fence可看到左右翻页时页面变化的帧率接近20fps,帧率过低。

  2. 查看该主线程范围内的Trace信息,在Slice List中通过RenderTask关键字过滤可看到有应用有执行Canvas组件的绘制任务。

  3. 使用ArkUI Inspector查看应用布局,应用采用Canvas组件来显示文档,而左右滑动翻页时会触发Canvas绘制,因此查看主线程执行Canvas组件的绘制任务的频率,确认是否是频率过低导致滑动翻页掉帧。
  4. 根据ArkUI Inspector获取的Canvas组件id号,在Profiler中搜索H:FrameNode[Canvas][id:2321]::RenderTask,确认应用两次执行Canvas组件绘制任务的时间间隔为50ms左右,正好是20fps,因此可知是应用侧Canvas组件绘制的频率较低,导致翻页掉帧问题。

分析结论

阅读文档、左右滑动翻页时,应用组件绘制的频率过低,小于屏幕刷新率,导致丢帧问题。

修改建议

优化组件绘制的相关业务逻辑,提高组件绘制的频率,可参考Drawing自绘制性能提升。