本文转自:http://www.cnblogs.com/yangxiao24/archive/2011/07/03/2096662.html
获取android系统中进程,任务,服务信息,需要通过ActivityManager类来实现。ActivityManager的功能是为系统中所有运行着的Activity交互提供了接口。
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
通过 List<RunningTaskInfo> runningTasks = am.getRunningTasks(maxNum);返回任务列表信息
通过List<RunningServiceInfo> serivces = am.getRunningServices(maxNum);返回服务列表信息
通过List<RunningAppProcessInfo> apps = am.getRunningAppProcesses(); 返回进程列表信息
下面是RunningTaskInfo,RunningServiceInfo,RunningAppProcessInfo,三个类的解释:
Android.app.ActivityManager.RunningTaskInfo
属性名称 |
数据类型 |
描述 |
baseActivity |
ComponentName |
任务做为第一个运行中的Activity组件信息 |
description |
CharSequence |
任务当前状态的描述 |
id |
Int |
任务的ID |
numActivities |
Int |
任务中所运行的Activity数量,包含已停止的 |
numRunning |
Int |
任务中所运行的Activity数量,不包含已停止或不延续运行的 |
thumbnall |
Bitmap |
任务当前状态的位图表示,目前为null |
topActivity |
ComponentName |
处于任务栈的栈顶的活动组件 |
Android.app.ActivityManager.RunningServiceInfo
属性名称 |
数据类型 |
描述 |
activeSince |
long |
服务第一次被激活的时间 (启动和绑定方式) |
clientCount |
Int |
接到该服务的客户端数目 |
crashCount |
Int |
服务运行期间,出现死机的次数 |
foreground |
Boolean |
若为true,则该服务在后台执行 |
lastActivityTime |
Long |
最后一个Activity与服务绑定的时间 |
pid |
int |
若此值不为0,则表示正在运行服务的Id |
Process |
String |
该服务的名称 |
restarting |
long |
若此值不为0,则表示该服务不在运行中,将在参数给定的时间点重启服务 |
service |
ComponentName |
服务的组件名称 |
started |
boolean |
若此值为true,则表示服务已经在启动运行中 |
Android.app.ActivityManager.RunningAppProcessInfo
属性名称 |
数据类型 |
描述 |
importance |
int |
进程在系统中的重要级别 |
importanceReasonCode |
int |
进程的重要原因代码 |
importanceReasonComponent |
ComponentName |
进程中组件的描述信息 |
importanceReasonPid |
int |
当前进程的子进程Id |
lru |
int |
在同一个重要级别内的附加排序值 |
pid |
int |
当前进程Id |
pkgList |
String[] |
被载入当前进程的所有包名 |
processName |
String |
当前进程的名称 |
uid |
int |
当前进程的用户Id |
获取任务信息
public void onClick(View v) {
String info = "";
List<RunningTaskInfo> runningTasks = am.getRunningTasks(maxNum);
for (RunningTaskInfo task:runningTasks){
info += "一个任务信息开始:\n";
info += "启动当前任务的activity名称:" + task.baseActivity.getClassName()+ "\n";
info += "当前任务状态的描述:" + task.description.toString()+ "\n";
info += "当前任务Id:" + task.id+ "\n";
info += "任务中所运行的Activity数量,包含已停止的:" + task.numActivities+ "\n";
info += "任务中所运行的Activity数量,不包含已停止或不延续运行的:" + task.numRunning+ "\n";
}
}
服务获取信息
public void onClick(View v) {
String info = "";
List<RunningServiceInfo> serivces = am.getRunningServices(maxNum);
for (RunningServiceInfo service:serivces){
info = "一个service信息开始:\n";
info += "服务第一次被激活的时间:" + service.activeSince + "\n";
info += "接到该服务的客户端数目:" + service.clientCount+ "\n";
info += "服务运行期间,出现死机的次数:" + service.crashCount+ "\n";
info += "若为true,则该服务在后台执行:" + service.foreground+ "\n";
info += "最后一个Activity与服务绑定的时间:" + service.lastActivityTime+ "\n";
info += "正在运行服务的Id:" + service.pid+ "\n";
info += "该服务的名称:" + service.process+ "\n";
info += "服务的组件名称:" + service.service+ "\n";
info += "若此值为true,则表示服务已经在启动运行中:" + service.started+ "\n";
info += "若此值不为0,则表示该服务不在运行中,将在参数给定的时间点重启服务:" + service.restarting+ "\n";
}
}
进程获取信息
public void onClick(View v) {
String info = "";
List<RunningAppProcessInfo> apps = am.getRunningAppProcesses();
for(RunningAppProcessInfo app:apps){
info = "进程信息开始:\n";
info += "当前进程的用户Id:" + app.uid + "\n";
info += "当前进程的名称:" + app.processName + "\n";
info += "当前进程Id:" + app.pid + "\n";
info += "进程在系统中的重要级别:" + app.importance + "\n";
info += "进程的重要原因代码:" + app.importanceReasonCode + "\n";
info += "进程中组件的描述信息:" + app.importanceReasonComponent + "\n";
info += "当前进程的子进程Id:" + app.importanceReasonPid + "\n";
info += "在同一个重要级别内的附加排序值:" + app.lru + "\n";
System.out.print(info);
}
}