Flutter - 定时器意外暂停

3

我按照以下文章中的细节实现了一个计时器,以便在切换选项卡时计时器会继续运行。 如何在Flutter中实现持久计时器?

我的问题是,只有当我没有将手机连接到电脑时,计时器才会“丢失”或暂停时间。当我将它插入电脑时,没有问题,仿真器也可以正常运行。我将flutter计时器与电脑或手机上的计时器进行测试,在5分钟后,它们匹配。但是,如果我的手机(Galaxy S9)没有插上电源,则在5分钟的实际时间后,flutter计时器可能仅达到2分钟,当我重新进入应用程序时,计时器正在运行,但计时器不会是应该有的样子。它不会崩溃或重置,当我重新进入应用程序时,它还在计数。我很难调试,因为当我将手机连接到电脑时,似乎一切正常!有什么建议吗?

2个回答

1

好的,谢谢!你解决了吗?我会试一下。 - Chris
1
当我开发我的应用程序时,我没有找到这篇文章,所以我作弊了。我开发了一个冥想应用程序,我希望能够进行无指导的定时冥想。为了让计时器在用户锁定屏幕后继续倒计时,我开启了后台音频权限并播放了一个静默的音轨来保持计时器运行。 - Eric Duffett

1
我建议实现WidgetsBindingObserverdidChangeAppLifecycleState方法,并检测应用何时进入后台和何时回到前台。当应用进入后台时,您保存当前时间(例如 onPauseTime )(您可以在此处使用SharedPreferences)和计时器剩余持续时间(timerDurationLeft)。
当应用回到前台时,您检查计时器是否在应用进入后台状态之前运行,如果是,则检查当前时间(例如 onResumeTime ),并计算秒数的时间差onResumeTime - onPauseTime)。使用时间差和timerDurationLeft,您可以计算计时器还有多少时间可以运行,并从该点开始启动/恢复计时器,或者如果时间已经过去,则结束/设置计时器为0:00。

如果您打算在中途执行某些操作,例如在计时器快要完成时设置通知,则使用后台服务是最好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接