检查服务是否正在运行

时间:2012-03-27 23:10:39

标签: android

我有一项服务,当我启动它时,安排警报管理器在00:00运行, 我想检查我的服务是否正在运行?

当我签入设置 - >应用程序 - >运行任务,我的服务存在于缓存进程中,因此下面的代码无法正常工作,因为我的服务注意到运行服务,是否可以帮助我?

private boolean isServiceRunning(String serviceName) {
        ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
        List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
        Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
        while (i.hasNext()) {
            ActivityManager.RunningServiceInfo runningServiceInfo = (ActivityManager.RunningServiceInfo) i.next();
            if( runningServiceInfo.service.getClassName().equals(serviceName) ) {
                return true;
            }
        }
        return false;
    }

2 个答案:

答案 0 :(得分:2)

如果您没有成功绑定服务,

BindService将返回false:

  

返回

     

如果您已成功绑定到该服务,则返回true;如果是,则返回false   没有建立连接,因此您将不会收到服务对象。

我会用它来检查服务是否没有运行。

请确保不要与AUTO_CREATE标志绑定,否则也会创建服务。

答案 1 :(得分:1)

我在活动中使用以下内容:

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