我正在使用WorkManager作为后台服务。我的代码如下
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) async {
switch (task) {
case "uploadLocalData":
print("this method was called from background!");
await BackgroundProcessHandler().uploadLocalData();
print("background Executed!");
return true;
break;
case Workmanager.iOSBackgroundTask:
print("iOS background fetch delegate ran");
return true;
break;
}
return false;
});
}在executeTask中有没有等待异步方法的方法?
发布于 2021-01-04 20:33:47
使非异步事物异步的方法是通过完成器。你创建一个完成器,等待它的未来,并在未来完成它。
Completer uploadCompleter = Completer();
void callbackDispatcher() {
Workmanager.executeTask((task, inputData) async {
switch (task) {
case "uploadLocalData":
print("this method was called from background!");
await BackgroundProcessHandler().uploadLocalData();
print("background Executed!");
uploadCompleter.complete();
return true;
break;
case Workmanager.iOSBackgroundTask:
print("iOS background fetch delegate ran");
return true;
break;
}
return false;
});
}
// somewhere else
await uploadCompleter.future;https://stackoverflow.com/questions/65562714
复制相似问题