Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Android系统的进程,任务,服务的信息

获取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
属性名称数据类型描述
baseActivityComponentName任务做为第一个运行中的Activity组件信息
descriptionCharSequence任务当前状态的描述
idInt任务的ID
numActivitiesInt任务中所运行的Activity数量,包含已停止的
numRunningInt任务中所运行的Activity数量,不包含已停止或不延续运行的
thumbnallBitmap任务当前状态的位图表示,目前为null
topActivityComponentName处于任务栈的栈顶的活动组件
 Android.app.ActivityManager.RunningServiceInfo
属性名称数据类型描述
activeSincelong服务第一次被激活的时间 (启动和绑定方式)
clientCountInt接到该服务的客户端数目
crashCountInt服务运行期间,出现死机的次数
foregroundBoolean若为true,则该服务在后台执行
lastActivityTimeLong最后一个Activity与服务绑定的时间
pidint若此值不为0,则表示正在运行服务的Id
ProcessString该服务的名称
restartinglong若此值不为0,则表示该服务不在运行中,将在参数给定的时间点重启服务
serviceComponentName服务的组件名称
startedboolean若此值为true,则表示服务已经在启动运行中

Android.app.ActivityManager.RunningAppProcessInfo
属性名称数据类型描述
importanceint进程在系统中的重要级别
importanceReasonCodeint进程的重要原因代码
importanceReasonComponentComponentName进程中组件的描述信息
importanceReasonPidint当前进程的子进程Id
lruint在同一个重要级别内的附加排序值
pidint当前进程Id
pkgListString[]被载入当前进程的所有包名
processNameString当前进程的名称
uidint当前进程的用户Id
 代码:
            获取任务信息
            @Override
            public void onClick(View v) {
                
                String info = "";
                List<RunningTaskInfo> runningTasks = am.getRunningTasks(maxNum);
                for (RunningTaskInfo task:runningTasks){
                    info += "一个任务信息开始: ";  
                    info += "启动当前任务的activity名称:" + task.baseActivity.getClassName()+ " ";
                    info += "当前任务状态的描述:" + task.description.toString()+ " ";
                    info += "当前任务Id:" + task.id+ " ";
                    info += "任务中所运行的Activity数量,包含已停止的:" + task.numActivities+ " ";
                    info += "任务中所运行的Activity数量,不包含已停止或不延续运行的:" + task.numRunning+ " ";                      System.out.print(info);                  }
            }  
            服务获取信息            @Override
            public void onClick(View v) {
                
                String info = "";
                List<RunningServiceInfo> serivces = am.getRunningServices(maxNum);  
                for (RunningServiceInfo service:serivces){
                    info = "一个service信息开始: ";  
                    info += "服务第一次被激活的时间:" + service.activeSince + " ";  
                    info += "接到该服务的客户端数目:" + service.clientCount+ " ";
                    info += "服务运行期间,出现死机的次数:" + service.crashCount+ " ";
                    info += "若为true,则该服务在后台执行:" + service.foreground+ " ";
                    info += "最后一个Activity与服务绑定的时间:" + service.lastActivityTime+ " ";
                    info += "正在运行服务的Id:" + service.pid+ " ";
                    info += "该服务的名称:" + service.process+ " ";
                    info += "服务的组件名称:" + service.service+ " ";
                    info += "若此值为true,则表示服务已经在启动运行中:" + service.started+ " ";
                    info += "若此值不为0,则表示该服务不在运行中,将在参数给定的时间点重启服务:" + service.restarting+ " ";
                                         System.out.print(info);
                }
            }             进程获取信息
            @Override
            public void onClick(View v) {
                
                String info = "";
                List<RunningAppProcessInfo> apps = am.getRunningAppProcesses();
                for(RunningAppProcessInfo app:apps){
                    info = "进程信息开始: ";
                    info += "当前进程的用户Id:" + app.uid + " ";
                    info += "当前进程的名称:" + app.processName + " ";
                    info += "当前进程Id:" + app.pid + " ";
                    info += "进程在系统中的重要级别:" + app.importance + " ";
                    info += "进程的重要原因代码:" + app.importanceReasonCode + " ";
                    info += "进程中组件的描述信息:" + app.importanceReasonComponent + " ";
                    info += "当前进程的子进程Id:" + app.importanceReasonPid + " ";
                    info += "在同一个重要级别内的附加排序值:" + app.lru + " ";
                    
                    System.out.print(info);
                }
            }