检查Android中是否正在运行服务

时间:2014-05-29 08:16:47

标签: android android-service

我正在编写一个检查特定服务是否正在运行的服务。我每秒使用警报管理器调用checkService.class。 (这很好用)

在checkService.class中,我有以下代码:

private boolean isMyServiceRunning() 
{
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) 
    {
        if (PhoneListnerService.class.getName().equals(service.service.getClassName())) 
        {
            return true;
        }
    }
    return false;
}

当它返回true时,我什么都不做。如果为false,我启动服务PhoneListnerService.class。这个过程第一次运行得很好,但如果我使用一些taskKiller应用程序杀死整个应用程序 - “isMyserviceRunning”仍显示 true

我相信taskKiller会杀死所有服务,BroadCastreceivers等 - 如果是这样的话,为什么显示 True 而不是显示 False

有人可以帮我吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

也许安卓没有完成停止服务。杀戮服务有不确定的行为。另一方面,您不必在启动服务之前检查服务是否正在运行。您可以使用该警报来启动服务。如果该服务已在运行,则onCreate未被调用,但onStartCommand已被调用。您可以做的是在从警报启动服务时在intent中添加一个变量,检查onStartCommand中的变量并使用一些简单的逻辑来确定要做什么。

答案 1 :(得分:0)

@TheDevMan可能是你的对错,但主要的是你在这里使用闹钟管理器,所以当你杀死你的服务时,它会在一秒钟内被alarmmanager重新启动。所以它返回true。检查它。