I want to get current location, when app went into sleep mode or Background.Currently i am using > Plugin.Geolocator.CrossGeolocator.Current DLL
in App OnSleep()
, But Its Working Till Android 8.1
but Android Pie
Not updating current Location Values.. How to Achieve in Android Pie?
Sample Code :
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
});
});
}
You can not just spin up a thread and expect it to keep running after the OS places the app into the background or battery saving mode.
You will have to setup an Android
Service
(and foreground it) at a minimum to handle your location updates.Background Execution Limits
https://developer.android.com/about/versions/oreo/background
Foreground Services
Schedule tasks with WorkManager