android – 如何在Flutter App中处理onPauseonResume?

android – 如何在Flutter App中处理onPauseonResume?,第1张

概述我是Dart / Flutter的新手,想建立一个简单的应用程序,其中LinearProgressBar每秒都会更新一次. 如果没有太多的实际代码,我有以下设置工作. >基于传递时间计算进度的函数. >显示进度的LinearProgressBar. >定期计时器每秒重新计算进度并更新进度条. >我每次都调试’tick’,重新计算完成. 一切都按预期工作,但有一个例外.当我在Android设备的后台 我是Dart / Flutter的新手,想建立一个简单的应用程序,其中linearProgressbar每秒都会更新一次.

如果没有太多的实际代码,我有以下设置工作.

>基于传递时间计算进度的函数.
>显示进度的linearProgressbar.
>定期计时器每秒重新计算进度并更新进度条.
>我每次都调试’tick’,重新计算完成.

一切都按预期工作,但有一个例外.当我在Android设备的后台移动应用程序时,’tick’会继续打印.

在原生AndroID上,当触发’onPause’事件时,我会取消我的定期计时器.

Flutter有类似的东西吗?我能找到的只是’initState’和’dispose’.但是,在将应用程序移动到背景时,不会调用dispose.

我不希望计时器在后台继续滴答作响.

在我的研究中,我发现了这个Stack Overflow问题onresume-and-onpause-for-widgets-on-flutter.它的答案建议使用TickerProviderStateMixin.

我用下面的方法.

class _barItemState extends State<barItem> with SingleTickerProvIDerStateMixin {    Ticker ticker;    num progress = 1.0;    @overrIDe    voID initState() {       super.initState();       ticker = createTicker((duration) => setState(() {          deBUGPrint('tick');          progress = duration.inSeconds / 30;       }))      ..start();    }    // other stuff omitted}

它工作正常,但我仍然不满意.

原因是,现在每隔几毫秒而不是每秒一次调用自动收报机回调.在我看来,这似乎是浪费资源(我不需要流畅的动画),…我是否过于复杂的事情?

即使我的用例似乎不需要它,我仍然想知道:

如何自己处理onPause / onResume事件?

解决方法 您可以覆盖WidgetBindingObserver接口的dIDChangeApplifecycleState,以接收应用程序生命周期更改的通知.

this page中有示例代码

总结

以上是内存溢出为你收集整理的android – 如何在Flutter App中处理onPause / onResume?全部内容,希望文章能够帮你解决android – 如何在Flutter App中处理onPause / onResume?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1136273.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存