首页 > 解决方案 > 如果 UI 由于性能不佳而丢失帧,Flutter Ticker 会发生什么?

问题描述

我在Ticker 类文档中读到:

“Ticker 类在每个动画帧调用一次它的回调。”

createTicker(TickerCallback onTick)用来实现秒表。所以我需要传递给的 elapsed 变量TickerCallback非常精确(即我需要在 5 秒后,elapsed 的值正好是 5 秒)。

现在我的问题是:如果我有一个缓慢的用户界面,代码非常糟糕,并且由于优化不好而错过了很多帧,会发生什么?我能想到2种情况:

  1. 秒表的时间不是以 60fps 更新(因为我的编码错误),但一旦更新,显示的时间是正确的
  2. 显示的时间有误
  3. 其他?

哪种情况?为什么(最重要的是)?另外,考虑到上述情况,是否建议使用ticker作为秒表?谢谢

标签: flutterdartanimationflutter-animationframe-rate

解决方案


要回答您的问题:

1.秒表的时间更新不是60fps(因为我的编码不好),但是一旦更新,显示的时间是正确的。

如果手机以 120 fps 工作,这是否意味着它会转发时间:)

Flutter 旨在提供每秒 60 帧 (fps) 的性能,或在能够 120Hz 更新的设备上提供 120 fps 的性能。对于 60fps,帧需要大约每 16ms 渲染一次。当 UI 渲染不流畅时会发生卡顿。

所以你可以使用ticker,即使动画很慢,它仍然会显示正确的时间。就像假设我们在第 500 帧上有一些延迟,它们将是动画的延迟,而不是经过的时间。就像在第 3 秒,我们有 1 秒的延迟,之后我们将有 5 秒,它会更新屏幕,但计时器会继续。

另外,考虑到上述情况,是否建议使用ticker作为秒表?

这是。在最坏的情况下,您将有丢帧,跳秒,但计时器将是准确的。


推荐阅读