Android----列出设备中全部启动的服务,及判断某个服务是否开启(服务状态)!

今天作Android开机自启动service的时候,忽然想到了个问题。php

以前,service没有加入开机自启动的时候,service是在启动app的时候启动的,如今把service加入了开机自启动里,因此,在启动app的时候要作一个判断,判断该service是否已经启动,若是没有启动,则,启动。若是,已经启动,就没必要在启动了。app

如今把获取本机的全部启动的服务类名和判断某个service是否启动的代码贴上来分享给你们。this

//获取全部启动的服务的类名 spa

ActivityManager  activityManager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);ci

List<ActivityManager.RunningServiceInfo>serviceList= activityManager..getRunningServices(30);  //先得到运行着sevice的列表
private String getServiceClassName(List<ActivityManager.RunningServiceInfo> serviceList){
         String res = "";
         for(int i = 0; i < serviceList.size(); i ++){
          res+=serviceList.get(i).service.getClassName()+ " /n";
          }
          return res;
}get

//经过Service的类名来判断是否启动某个服务
private boolean serviceIsStart(List<ActivityManager.RunningServiceInfo> serviceList , String serviceClassName){
     for(int i = 0; i < serviceList.size(); i ++){
             if(serviceClassName.equals(serviceList.get(i).service.getClassName())){
             return true;
            }
     }
 return false;
}
it

应用demo列子:class

public void onCreate(Bundle savedInstanceState) {后台

     ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
     List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(300);
     final String serviceName = "com.hw.zmxy.service.DetecteAlarmService"; // 个人一个服务
     boolean flag = serviceIsStart(serviceList, serviceName);
     if (flag) {
      Log.i(TAG, "DetecteAlarmService已经启动过了!");
     } else {
      // 能够在此添加 启动service的代码List

      Log.i(TAG, "DetecteAlarmService首次启动!");
      Intent mIntent = new Intent(this, DetecteAlarmService.class);
      startService(mIntent);  // 开启监测服务    
     }

}

/**
  * 经过Service的类名来判断是否启动某个服务
  */
 public boolean serviceIsStart(List<ActivityManager.RunningServiceInfo> serviceList, String serviceClassName) {
  for (int i = 0; i < serviceList.size(); i++) {
   if (serviceClassName.equals(serviceList.get(i).service.getClassName())) {
    return true;
   }
  }
  return false;
 }

 杀不掉的后台服务:

http://www.xuephp.com/main/detail.php?cid=40006

相关文章
相关标签/搜索