我正在尝试创建一个计时器应用,该应用具有多个用于不同任务的倒数计时器。我面临的问题是,如果我启动一个计时器,然后按返回按钮,计时器将停止。所以我想让计时器一直运行到暂停或计时器结束并提醒用户或应用程序被破坏为止。请帮助我如何使用Flutter进行操作?我也使用sql-lite存储所有计时器。
啊,后台任务! Dart(Flutter使用的语言)是单线程。
single-threaded
是什么意思?诸如Dart之类的单线程语言具有称为事件循环的东西。这意味着Dart逐行运行代码(除非您使用Futures,但在这种情况下不会帮助您)。它注册诸如按钮点击之类的事件,并等待用户按下它们,等等。
我推荐这篇文章和有关单线程内容的视频:
https://medium.com/dartlang/dart-asynchronous-programming-isolates-and-event-loops-bffc3e296a6a
https://www.youtube.com/watch?v=vl_AaCgudcY&feature=emb_logo
无论如何,解决此问题的方法(如以上文章和视频所述)是隔离。在Dart中创建隔离时,它会旋转另一个线程来执行繁重的任务,或者只是在应用程序可能或可能不集中时执行某些操作。这样,主线程可以加载UI之类的东西,而在另一个线程中,它可以照顾您放入其中的其他内容,因此,可以提高应用程序的性能。
它与您的问题有什么关系?
] >>您可以使用隔离来在应用程序后台(无论是否打开)执行任务。
本文(足够方便)介绍了隔离中的计时器:
https://codingwithjoe.com/dart-fundamentals-isolates/
基本上,它在隔离物中使用Timer.periodic
来执行对于您的方案perfect