我的应用程序在启动时运行服务(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!怎么解决?
答案 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
}
希望它有所帮助。