安卓(Android)如何获取正在运行服务的详细信息

  ActivityManager.RunningServiceInfo类:  封装了正在运行的服务信息
  
  获取系统里所有真正运行的服务是通过调用ActivityManager方法来得到的,具体方法如下:
  
  List<ActivityManager.RunningServiceInfo> getRunningServices (int maxNum)
  功能:返回所有正在运行的服务
  参数:   maxNum 代表我们希望返回的服务数目大小,一般给个稍大的值即可, 例如,50 。
  
  ActivityManager.RunningServiceInfo 类
  常用字段:
  
  long   activeSince        服务第一次被激活的时间, 包括启动和绑定方式
  int      clientCount          如果该Ser搜索vice是通过Bind方法方式连接,则clientCount代表了service连接客户端的数目
  int      crashCount          服务运行期间,出现死机的次数
  boolean   foreground   若为true,则该服务在后台执行
  int        pid                          如果不为0,表示该service所在的进程ID号( PS:为0的话我也不清楚 - - 求指点)
  int        uid                          用户ID 类似于Linux的用户权限,例如root等
  String   process                 进程名,默认是包名或者由属性android:process指定
  ComponentName  service          获得该Service的组件信息 包含了pkgname / servicename信息
  
  PackageManger类
  说明: 封装了对应用程序信息的操作
  获得应用程序信息的的方法如下:
  public abstractApplicationInfo  getApplicationInfo(String  packageName, int flags)
  参数:packagename 包名
  flags 该ApplicationInfo是此flags标记,通常可以直接赋予常数0即可
  功能:返回ApplicationInfo对象

  

上面是百度的,下面是我自己写的一个判断服务是否运行的工具方法,有需要的朋友直接粘贴就好,不足之处,还望指正

/** * 判断传入的服务名是否正在运行 */ public static boolean  isServiceRunning(Context c,String serviceName){ //获取一个什么什么管理者,而后,进行判断 //ActivityManager 相当于win的任务管理器,什么都管 ActivityManager am = (ActivityManager) c.getSystemService(Context.ALARM_SERVICE); //通过任务管理器的getRunningServices()方法去获取当前正在运行的服务的信息 //后面的int值是希望获取的服务数   得到一个集合,遍历,看看有没有传入进来的参数 List<RunningServiceInfo> runningServices = am.getRunningServices(100); for (RunningServiceInfo runningServiceInfo : runningServices) { ComponentName component = runningServiceInfo.service; String className = component.getClassName(); if(className.equals(serviceName)){ return true; } } return false; }

注意,这里传入的参数建议为XXXService.class.getName();

比较的是全类名,建议使用体统提供的getView方法去获取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值