027、获取后台正在运行的程序

1、获取正在后台运行的程序
需要申请的权限:
 <uses-permission android:name="android.permission.GET_TASKS"/>

 

java代码:
                ActivityManager am = (ActivityManager) MainActivity.this
                        .getSystemService(Context.ACTIVITY_SERVICE);
                List<RunningTaskInfo> runningTasks = am.getRunningTasks(100);
                taskNames.clear();
                for (RunningTaskInfo info : runningTasks) {
                    taskNames.add(info.topActivity.getPackageName());
                    taskIds.add(info.id);
                }

  

2、获取正在后台运行的服务:
java代码:
                ActivityManager am = (ActivityManager) MainActivity.this.getSystemService(Context.ACTIVITY_SERVICE);
                List<RunningServiceInfo> runningServices = am.getRunningServices(100);
                serviceNames.clear();
                for(RunningServiceInfo info : runningServices){
                    
                    serviceNames.add(info.service.getClassName());
                }

  

ActivityManager.RunningTaskInfo及ActivityManager.RunningServiceInfo可访问的属性如下
Android.app.ActivityManager.RunningTaskInfo
数据类型 属性名称 描述
ComponentName baseActivity 该任务作为第一个运行中的Activity组件名称
CharSequence description 该任务现在的状态描述
Int id 该任务的ID
Int numActivities 该任务锁运行的Activity数量,包含已停止的
Int numRunning 该任务正在运行的Activity数量,不包含已停止或不延续运行的
Bitmap thumbnail 以缩图显示该任务目前的状态
ComponentName topActivity 该任务自运行以来最优先运行的组件名称
 
Android.app.ActivityManager.RunningServiceInfo
数据类型 属性名称 描述
long activeSince 该服务自启动至今的时间
int clientCount 连接至此服务的client数量
int crashCount 该服务在运行时共死机的次数
boolean foreground 若为true,则该服务在后台运行
long lastActivityTime 最后一个Activity与该服务绑定的时间
int pid 若此值不为0,则表示正在运行服务的ID
String Process 该服务的名称
long restarting 若此值不为0,则表示该服务不在运行中,但也许是在指定的时间才运行
ComponentName service 服务的组件名称
boolean started 若此值为true,则表示服务已经在启动运行中
 
 
原文地址:https://www.cnblogs.com/zyh-blog/p/3343672.html