gpt4 book ai didi

asynchronous - Flutter中可靠/持久的计时器

转载 作者:行者123 更新时间:2023-12-03 04:56:40 26 4
gpt4 key购买 nike

在我的应用程序中,它需要一个计时器来在计时器到期时异步启动新的UI屏幕。
以下代码显示了所需的语义:
Timer t = Timer(Duration(seconds: myDuration), () {
askQuestion('How are you doing?'); });
// Maybe later, before the timer goes off...
t.cancel();

使用Timer,我的实现有时可以工作,特别是持续时间短的时候。

但是,当持续时间很大(例如25或400分钟)时,我的应用程序将被终止并重新启动,然后Timer丢失,超时将永远不会发生。

我的问题是我如何才能使Timer在应用程序重启后持久存在或通过某种等效机制可靠运行?

我可以通过检查计时器的存储时间值(在程序重新启动时到期)来提供临时的持久解决方案,并确定是否应该重新启动计时器。但是我想了解是否已经有一个通用的解决方案,因为它是Future.delayed操作在程序重新启动后生存的一般要求,否则,Future.delayed的使用受到限制。

否则,我可能会寻找提供持久性的替代解决方案。我记得可能会有本地通知。

最佳答案

我认为,您应该在应用程序启动时启动计时器,但在显示屏幕以缓存服务/首选项/数据库时也需要写时间。然后,如果您的应用程序被终止并再次启动,您将以休息时间启动计时器(因为每次启动时都需要启动计时器,并且您知道有多少休息时间)。

想象一下,您应该每400分钟显示一次屏幕。好的,从现在开始是DateTime.now().add(Duration(minutes:400)),我们可以从现在开始安全地通过(伪代码)启动计时器,但是思路应该很清楚

timeLeft = cachedDateTime - DateTime.now()
if(timeLeft<0){
show you page immediately and write to cache next time
}
else {
start timer with time left here
}

关于asynchronous - Flutter中可靠/持久的计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60471202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com