我想获取当前位置,当应用程序进入睡眠模式或Background.Currently。我正在应用程序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
});
});
}
最佳答案
在操作系统将应用程序置于后台或省电模式后,您不仅可以旋转线程并期望它继续运行。
您至少需要设置一个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