Android-пирог Xamarin Forms не получает текущее местоположение в фоновом режиме приложения - PullRequest
0 голосов
/ 25 января 2019

Я хочу получить текущее местоположение, когда приложение перешло в спящий режим или в фоновый режим. В настоящее время я использую> Plugin.Geolocator.CrossGeolocator.Current DLL в приложении OnSleep(), но оно работает до Android 8.1, но Android 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
 });
 });
 }

1 Ответ

0 голосов
/ 25 января 2019

Вы не можете просто раскрутить поток и ожидать его продолжения после того, как ОС переводит приложение в фоновый режим или режим экономии заряда батареи.

Вам потребуется настроить Android Service (и на переднем плане) как минимум для обработки обновлений вашего местоположения.

Пределы выполнения фона

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

Услуги переднего плана

Планирование задач с помощью WorkManager

...