gpt4 book ai didi

android - 带有 Workmanager 插件的后台任务在 flutter 中不起作用

转载 作者:行者123 更新时间:2023-12-05 06:59:37 24 4
gpt4 key购买 nike

我试图用一个按钮触发一些后台任务,我发现 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 模拟器上对其进行了测试,通知在一次性任务和周期性任务中都完全按照它们应有的方式工作,所以我认为这是一些东西也许与电话有关。虽然不太确定该怎么做。

最佳答案

我已经尝试了您提供的代码,我遇到的唯一问题是 initialize()registerOneOffTask()executeTask( ) 无法通过来自 Workmanager 的静态调用进行访问。除此之外,代码工作正常。

如本doc所述, Android 后台任务可能不稳定,因为 Android 决定何时是最佳运行时间。即使在 Debug模式下,也无法保证执行作业的运行。

关于android - 带有 Workmanager 插件的后台任务在 flutter 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64355593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com