【问题标题】:Dart Timers On Flutter apps when suspended or paused暂停或暂停时 Flutter 应用程序上的 Dart 计时器
【发布时间】:2021-07-24 06:19:17
【问题描述】:

我在 Flutter 应用上使用 Firebase Auth REST API 的密码登录。对于令牌每 3600 秒过期一次,我想每 50 分钟使用 Timer 刷新令牌。

当应用程序暂停或暂停时计时器是否运行?有更好的方法吗?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您可以使用workmanager 运行定期任务。您可以将其设置为每“x”分钟执行一次任务,在这种情况下将刷新令牌。或者另一种选择是在您的项目中结合使用 Kotlin 和 Java,不推荐这样做,因为这样做非常耗时。我尝试了 WorkManager,它非常简单。

    Workmanager().initialize(
        callbackDispatcher,
    );
    Workmanager().registrePeriodicTask(
        "uniqueName",
        frequency: Duration(minutes: 50),
        "taskName",
    )
    
    void callbackDispatcher() {
        Workmanager().executeTask((taskName, inputData) async{
            //Code
            return Future.value(true);//Required No Matter The Task
    });
    }
    

    【讨论】:

    • 不同应用周期有什么问题吗?
    • @KinPu 据我所知,一旦你初始化/注册了周期性任务,即使应用程序不在内存中,它也会运行。这是因为 WorkManager 将在单独的线程中运行。尽管我看到人们通过修改 java 文件来初始化工作管理器,如link 所示,但我发现这样做非常困难,并且随着代码库的增长它会引入错误。此外,在 IOS 上 WorkManager 的行为与在 android 上的行为不同,有时它甚至会忽略该任务。
    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2019-07-28
    相关资源
    最近更新 更多