【发布时间】:2020-11-12 03:41:26
【问题描述】:
在我的应用程序中,我需要在后台执行一些任务(而应用程序没有在前台运行)。我可以在后台执行一些方法,但是我需要在后台执行一个我不能执行的异步方法。
这是我的代码的一部分:
void main() {
runApp(MaterialApp(
home: Home(),
));
Workmanager.initialize(callbackDispatcher, isInDebugMode: true);
Workmanager.registerPeriodicTask("1", "simplePeriodicTask",
existingWorkPolicy: ExistingWorkPolicy.replace,
frequency: Duration(minutes: 15),
initialDelay:
Duration(seconds: 5),
constraints: Constraints(
networkType: NetworkType.connected,
));
}
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) {
_HomeState().manager();//This is not Working
print('Background Services are Working!');//This is Working
return Future.value(true);
});
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
void initState() {
login();
super.initState();
}
void manager() async {
if (account == null) {
await login();
await managerLocal();
managerDrive();
} else {
await managerLocal();
managerDrive();
}
}
.......
.......
}
【问题讨论】:
-
你能解释一下你所说的“不工作”是什么意思吗?为什么你不等待你的异步方法?
-
不工作意味着它没有被执行。
-
您启动它,然后不再等待它,而是立即告诉您的呼叫者您已完成。我不希望它在这种情况下完全执行。
-
那么解决办法是什么?
标签: flutter dart async-await background-process