如果 UI 由于性能不佳而丢失帧,Flutter Ticker 会发生什么情况?

What happens to Flutter Ticker if the UI misses frames due to bad performances?

我在 Ticker class documentation 上看到:

"Ticker class calls its callback once per animation frame."

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

现在我的问题是:如果我有一个缓慢的 UI 非常糟糕的编码并且由于优化不当而错过了很多帧会怎样?我能想到2个案例:

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

这是什么情况?为什么(最重要的)?另外,考虑到上述情况,是否建议将自动收报机用于秒表?谢谢

回答您的问题:

1.The time of the stopwatch gets updated not at 60fps (because of my bad coding) but once it gets updated, the time being displayed is correct.

如果 phone 以 120 fps 工作,是否意味着它会提前 :)

Flutter aims to provide 60 frames per second (fps) performance, or 120 fps performance on devices capable of 120Hz updates. For 60fps, frames need to render approximately every 16ms. Jank occurs when the UI doesn't render smoothly.

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

Also, considering the above, is it adviceable to use ticker for a stopwatch?

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