【发布时间】: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