Android 中判断某一指定的服务是否有在运行中,这里使用ActivityManager实例来检索正在运行的任务实例,获取其组件名称,然后通过与指定service的组件名称进行比对。。。
代码如下:
/**
* @params componentName 查询指定service的组件名;
* e.g. com.hr.life.trnfa.service.services.MqttConnectService
*
* @return boolean 返回该服务是否在运行中;
*/
private boolean serverIsRunning(String componentName) {
ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> runningServices
= activityManager.getRunningServices(Integer.MAX_VALUE);
if (runningServices.size() <= 0) {
return false;
}
for (ActivityManager.RunningServiceInfo serviceInfo : runningServices) {
if (componentName.equals(serviceInfo.service.getClassName())) {
return true;
}
}
return false;
}
Notes : 注意activityManager.getRunningServices(int maxNum),该方法这里使用的是Integer.MAX_VALUE最大值,如果应用较多相关的service也会很多,如果固定值可能存在没有列出的情况;