我想获取当前位置,当应用程序进入睡眠模式或Background.Currently。我正在应用程序Plugin.Geolocator.CrossGeolocator.Current DLL中使用> OnSleep(),但是它的工作状态直到Android 8.1Android Pie不会更新当前位置值。在Android Pie中实现?

样例代码:

 protected override async void OnSleep()
 {
 var minute = TimeSpan.FromSeconds(30);
 Device.StartTimer(minute, () =>
 {
 await Task.Run(async () =>
 {
 TimeSpan t = TimeSpan.FromSeconds(10);
 var locator = Plugin.Geolocator.CrossGeolocator.Current;
 locator.DesiredAccuracy = 5;
 var position = await locator.GetPositionAsync(timeout: t);
 //API Method
 });
 });
 }

最佳答案

在操作系统将应用程序置于后台或省电模式后,您不仅可以旋转线程并期望它继续运行。

您至少需要设置一个Android Service(并使其前台)来处理您的位置更新。

后台执行限制

https://developer.android.com/about/versions/oreo/background

前台服务


https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/services/foreground-services


使用WorkManager安排任务


https://developer.android.com/about/versions/pie/android-9.0

10-05 21:07
查看更多