在用到Service类的时候,我们要开启一个服务,我们首先要判断是不是已经在后台开启过了这个服务了,如果开启过了我们在开启一起,结果是肯定的,程序崩溃了。所以我们要先判断后台的程序是不是开启了,然后根据状态判断我们要不要再开启一次,但是该怎么做呢?其实也很简单,准确说是代码很简单,好了,直接上代码:
private boolean isServiceRunning(String service){
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
ArrayList<ActivityManager.RunningServiceInfo> serviceList = (ArrayList<RunningServiceInfo>) manager.getRunningServices(50);
if(serviceList.size()<=0)
return false;
for(int i=0;i<serviceList.size();i++){
if(serviceList.get(i).service.getClassName().equals(service)){
return true;
}
}
return false;
}
我们需要传入一个String类型的参数,这个参数是Service的全路径:com.example.sm.SendService,这是我定义的Service的全路径。
执行这个方法,然后我们就可以知道 是不是服务已经开启了。