服务未在某些设备上运行并且无法停止运行服务

时间:2019-05-08 18:55:30

标签: service xamarin.forms xamarin.android location location-services

我在我的应用程序中实现了定位服务,该服务每隔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运行时,它仍然显示为真。

任何想法如何停止服务? 在某些情况下,我需要停止服务并重新启动。

谢谢

0 个答案:

没有答案