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,则表示服务已经在启动运行中 |