flutter - 如果 UI 由于性能不佳而丢失帧,Flutter Ticker 会发生什么?
问题描述
我在Ticker 类文档中读到:
“Ticker 类在每个动画帧调用一次它的回调。”
我createTicker(TickerCallback onTick)
用来实现秒表。所以我需要传递给的 elapsed 变量TickerCallback
非常精确(即我需要在 5 秒后,elapsed 的值正好是 5 秒)。
现在我的问题是:如果我有一个缓慢的用户界面,代码非常糟糕,并且由于优化不好而错过了很多帧,会发生什么?我能想到2种情况:
- 秒表的时间不是以 60fps 更新(因为我的编码错误),但一旦更新,显示的时间是正确的
- 显示的时间有误
- 其他?
哪种情况?为什么(最重要的是)?另外,考虑到上述情况,是否建议使用ticker作为秒表?谢谢
解决方案
要回答您的问题:
1.秒表的时间更新不是60fps(因为我的编码不好),但是一旦更新,显示的时间是正确的。
如果手机以 120 fps 工作,这是否意味着它会转发时间:)
Flutter 旨在提供每秒 60 帧 (fps) 的性能,或在能够 120Hz 更新的设备上提供 120 fps 的性能。对于 60fps,帧需要大约每 16ms 渲染一次。当 UI 渲染不流畅时会发生卡顿。
所以你可以使用ticker,即使动画很慢,它仍然会显示正确的时间。就像假设我们在第 500 帧上有一些延迟,它们将是动画的延迟,而不是经过的时间。就像在第 3 秒,我们有 1 秒的延迟,之后我们将有 5 秒,它会更新屏幕,但计时器会继续。
另外,考虑到上述情况,是否建议使用ticker作为秒表?
这是。在最坏的情况下,您将有丢帧,跳秒,但计时器将是准确的。
推荐阅读
- python - 在 Tensorflow 中使用 tf.while_loop 更新变量
- oracle - 如何使用 Enter-query 操作获取 oracle 表单生成的数据块默认值
- html - 滚动后的导航栏拉伸太多
- ms-access - 访问创建总和(iif 以获取适用的期数
- qt - 配置 Qt5 以从源代码编译时出错
- flutter - Flutter Tabbarview 下划线颜色
- javascript - 滚动和窗口加载或调整大小时导航栏更改
- windows - 如何在 Windows 10 下的 Anaconda 中安装 PyGObject?
- cakephp-3.0 - 在 CakePHP3.6 中,如何将另一个控制器的函数调用到另一个控制器中?
- javascript - 自定义“import”与 webpack 的工作方式