【问题标题】:Background tasks with Workmanager plugin don't work in flutter带有 Workmanager 插件的后台任务在颤振中不起作用
【发布时间】:2020-10-14 14:33:12
【问题描述】:

我正在尝试使用按钮触发一些后台任务,并且发现用于 Flutter 的 workmanager 插件非常喜怒无常。它偶尔会起作用,但这种情况很少见。

我正在使用这个基本应用程序对其进行测试:

import 'package:flutter/material.dart';
import 'package:workmanager/workmanager.dart';

const task1 = "simpleTask";

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Workmanager.initialize(
      callbackDispatcher, 
      isInDebugMode: true, 
  ); 
  //Workmanager.registerPeriodicTask("1", task1, initialDelay: Duration(seconds: 10), frequency: Duration(minutes: 15));
  //Workmanager.registerOneOffTask("1", task1, initialDelay: Duration(seconds: 5));
  runApp(MaterialApp(
  home: Scaffold(
    body: Container(
      color: Colors.blueAccent[400],
      child: Center(
        child: RaisedButton(
          child: Text("create notification in five seconds"),
          onPressed: () {
            Workmanager.registerOneOffTask("1", task1, initialDelay: Duration(seconds: 5));
          },
        ),
      ),
    ),
  ),
));}


void callbackDispatcher() {
  Workmanager.executeTask((task, inputData) {
    print("it's doing the task");
    switch (task) {
      case task1:
        print(task1);
        break;
      case Workmanager.iOSBackgroundTask:
        print("iOS background fetch delegate ran");
        break;
    }
    return Future.value(true);
});
}

我试图从一个按钮触发一个后台任务,因为它没有像我之前那样工作,两行被注释掉。我也从未有过Workmanager.registerPeriodicTask 的工作。这可能是最初的延迟并没有在最后触发第一个任务,而是启动 15 分钟计时器直到第一个任务,但鉴于我必须等待至少 15 分钟,因此测试起来非常痛苦。

是否有我遗漏的命令或我遗漏的必要await 或其他什么?

编辑: 我刚刚在 AndroidStudio 的 Android 模拟器上对其进行了测试,并且通知的工作方式与一次性和定期任务完全一样,所以我认为这是一些东西也许与手机有关。不过真的不知道该怎么办。

【问题讨论】:

  • 嗨。你有解决方案吗?我现在也遇到了同样的问题。

标签: android flutter background-process android-workmanager


【解决方案1】:

我已经尝试了您提供的代码,但我遇到的唯一问题是无法通过 Workmanager 的静态调用访问 initialize()registerOneOffTask()executeTask()。除此之外,代码运行良好。

正如doc 中所述,Android 后台任务可能参差不齐,因为 Android 会决定何时是运行的最佳时间。即使在调试模式下,也无法保证强制运行作业。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    • 2020-03-10
    相关资源
    最近更新 更多