Я запускаю LocationService в формах Xamarin во время входа в систему.И этот сервис работает каждые 5 минут, выбирает местоположение и сохраняет в локальной БД.По какой-то неизвестной причине служба определения местоположения не работает через несколько часов.
Всякий раз, когда приложение убивается и открывается, я проверяю, остановилась ли служба.Если он остановлен, я снова запускаю службу следующим образом:
В OnStart и OnResume я проверяю запуск службы следующим образом:
bool IsLocationServiceRunning = DependencyService.Get<IServiceRunning>().IsServiceRunning();
if (!IsLocationServiceRunning)
DependencyService.Get<IDeviceService>().StartLocationService();
ServiceRunningInterface:
public bool IsServiceRunning()
{
ActivityManager manager = (ActivityManager)Forms.Context.GetSystemService(Context.ActivityService);
Type serviceClass = typeof(LocationService);
foreach (var service in manager.GetRunningServices(int.MaxValue))
{
if (service.Service.ClassName.EndsWith(typeof(LocationService).Name))
{
return true;
}
}
}
return false;
}
Каждый раз, когда я получу значение Is LocationRunning как true (что не так), и служба не запустится.