В моем приложении реализована служба определения местоположения, которая запускается каждые x минут.Служба запускается, когда пользователь входит в систему и всякий раз, когда приложение убивается и открывается, я проверяю, запущена ли служба в OnStart ().
В App.xaml.cs, Код для остановки службы:
DependencyService.Get<IDeviceService>().StopLocationService();
Код для проверки работоспособности службы:
bool IsLocationServiceRunning = DependencyService.Get<IServiceRunning>().IsServiceRunning();
В DeviceService.cs:
public void StopLocationService()
{
try
{
Android.App.Application.Context.StopService(new Intent(Android.App.Application.Context, typeof(LocationService)));
}
catch (Exception ex)
{
Utility.LogMessage("Error in StopLocationService(M): " + ex.Message, LogMessageType.error);
}
}
ServiceRunning.cs:
public bool IsServiceRunning()
{
try
{
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;
}
}
}
catch(Exception ex)
{
Utility.LogMessage("Error in IsServiceRunning(M): ", LogMessageType.error);
Utility.LogError(ex, LogMessageType.error);
}
return false;
}
Во-первых, я прекращаю службу, и когда я проверяю, работает ли IsLocationService, он все равно говорит true.
Есть идеи, как остановить службу?Мне нужно остановить службу и начать заново в некоторых сценариях.
спасибо