Android - 检查启动服务是否正在运行

时间:2014-07-29 02:57:10

标签: java android

我的应用程序在启动时运行服务(Service.java)。如果我的服务仍在运行,我需要知道何时手动启动应用程序(在Main.java中)。在onCreate上的Main.java上执行我的代码:

if(isMyServiceRunning(Service.class)){
   System.out.println("Still running");
}

isMyServiceRunning函数:

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

问题是即使服务仍在运行,isMyServiceRunning也会返回false!怎么解决?

1 个答案:

答案 0 :(得分:1)

我将使用getter / setter在应用程序对象中创建一个布尔成员,而不是使用该方法。在服务onCreate()中,您将设置标志,然后您可以从活动中的任何位置查询该标志。

在您的应用程序对象类(假设为MyApplication.java)中:

private boolean serviceRunning = false;

public boolean isServiceRunning() {
    return serviceRunning;
}

public void setServiceRunning(boolean serviceRunning) {
    this.serviceRunning = serviceRunning;
}

然后,内部服务的onCreate():

((MyApplication)getApplication()).setServiceRunning(true);

然后,从活动的任何一点检查服务的状态:

if(((MyApplication)getApplication()).isServiceRunning()){
    //do the stuff here
}

希望它有所帮助。