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

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

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

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