问题描述
需要在扑灭后将其运行在android设备上。我正在使用background_fetch,当应用程序运行时它可以正常工作。但在终止该应用程序后将无法运行。
BackgroundFetch.configure(BackgroundFetchConfig(
minimumFetchInterval: 15,forceAlarmManager: false,stopOnTerminate: false,startOnBoot: true,enableHeadless: true,requiresBatteryNotLow: false,requiresCharging: false,requiresstorageNotLow: false,requiresdeviceidle: false,requiredNetworkType: NetworkType.NONE,),_onBackgroundFetch).then((int status) {
print('[BackgroundFetch] configure success: $status');
setState(() {
_status = status;
});
}).catchError((e) {
print('[BackgroundFetch] configure ERROR: $e');
setState(() {
_status = e;
});
});
解决方法
您可以使用Function.call插件。
const myTask = "syncWithTheBackEnd";
void main() {
Workmanager.initialize(callbackDispatcher);
Workmanager.registerOneOffTask(
"1",myTask,//This is the value that will be returned in the callbackDispatcher
initialDelay: Duration(minutes: 5),constraints: WorkManagerConstraintConfig(
requiresCharging: true,networkType: NetworkType.connected,),);
runApp(MyApp());
}
void callbackDispatcher() {
Workmanager.executeTask((task) {
switch (task) {
case myTask:
print("this method was called from native!");
break;
case Workmanager.iOSBackgroundTask:
print("iOS background fetch delegate ran");
break;
}
//Return true when the task executed successfully or not
return Future.value(true);
});
}
完整的文章WorkManager