void locationHandler() {
Workmanager().executeTask((_) {
print('background task running');
// Fetch device location data
});
}
void main() {
Workmanager().initialize(
locationHandler, // The top level function, aka callbackDispatcher
isInDebugMode: true // If enabled it will post a notification whenever the task is running. Handy for debugging tasks
);
Workmanager().registerOneOffTask('yourTaskName', 'yourTaskNameDescription);
runApp(MyApp());
}
1条答案
按热度按时间jdgnovmf1#
当应用程序在后台运行时,获取设备的位置数据是可能的。您提到,即使应用程序被杀死,您也希望实现这一点-如果您在这里指的是在Android中被强制停止后获取位置数据,那么这是不可能的。
如果你想在应用后台运行时获取用户数据,你可以使用geolocator插件。尽管这样做会影响隐私,但你需要向用户请求权限。权限请求内置在
geolocator
插件中。在此之后,您可以侦听Stream并使用您希望存储位置数据的方式更新代码片段。
若要在后台运行任务,即使应用未在前台运行,您也可以使用workmanager。
创建一个用于运行任务的工作管理器,并在Flutter项目的
main.dart
上对其进行初始化。