我在我的应用程序中实现了定位服务,该服务每隔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运行时,它仍然显示为真。
任何想法如何停止服务? 在某些情况下,我需要停止服务并重新启动。
谢谢