(昨天有事没写完,今天继续)
获取当前服务信息RunningServiceInfo
List<RunningServiceInfo> list4 = activityManager.getRunningServices(10);
if (list4.size() != 0) {
for (RunningServiceInfo info : list4) {
ComponentName name = info.service;// 服务组件名
Log.i(TAG, "name: " + name);
String packageName = info.clientPackage;// 包名
Log.i(TAG, "packageName: " + packageName);
String proName = info.process;// 进程名
Log.i(TAG, "proName: " + proName);
long startTime = info.activeSince;// 开始时间
Log.i(TAG, "startTime: " + startTime);
int clientCount = info.clientCount;// 连接到服务的客户数量
Log.i(TAG, "clientCount: " + clientCount);
int label = info.clientLabel;// 标识特殊服务
Log.i(TAG, "label: " + label);
int crashCount = info.crashCount;// 运行过程中奔溃的次数
Log.i(TAG, "crashCount:" + crashCount);
int flag = info.flags;
Log.i(TAG, "flag: " + flag);
long lastTime = info.lastActivityTime;// 最后服务结束的时间
Log.i(TAG, "lastTime: " + lastTime);
long restarting = info.restarting;// 如果非0,代表服务没启动,计划启动
Log.i(TAG, "restarting: " + restarting);
boolean isForeground = info.foreground;// 是否处于处于最前面的服务状态
Log.i(TAG, "isForeground: " + isForeground);
boolean isStart = info.started;//服务以后已经开启
Log.i(TAG, "isStart: " + isStart);
int pid = info.pid;
Log.i(TAG, "pid: " + pid);
int uid = info.uid;
Log.i(TAG, "uid: " + uid);
Log.i(TAG, "====================================");
}
}
运行程序获得的信息如下:
03-28 10:04:26.850: I/MainActivity(1567): name: ComponentInfo{com.android.bluetooth/com.android.bluetooth.hid.HidService}
03-28 10:04:26.850: I/MainActivity(1567): packageName: null
03-28 10:04:26.850: I/MainActivity(1567): proName: com.android.bluetooth
03-28 10:04:26.860: I/MainActivity(1567): startTime: 21754
03-28 10:04:26.860: I/MainActivity(1567): clientCount: 1
03-28 10:04:26.860: I/MainActivity(1567): label: 0
03-28 10:04:26.860: I/MainActivity(1567): crashCount:0
03-28 10:04:26.860: I/MainActivity(1567): flag: 0
03-28 10:04:26.860: I/MainActivity(1567): lastTime: 21754
03-28 10:04:26.860: I/MainActivity(1567): restarting: 0
03-28 10:04:26.860: I/MainActivity(1567): isForeground: false
03-28 10:04:26.860: I/MainActivity(1567): isStart: false
03-28 10:04:26.860: I/MainActivity(1567): pid: 0
03-28 10:04:26.860: I/MainActivity(1567): uid: 1002
03-28 10:04:26.860: I/MainActivity(1567): ====================================
03-28 10:04:26.860: I/MainActivity(1567): name: ComponentInfo{com.android.phone/com.android.phone.CallForwardService}
03-28 10:04:26.860: I/MainActivity(1567): packageName: null
03-28 10:04:26.860: I/MainActivity(1567): proName: com.android.phone
03-28 10:04:26.870: I/MainActivity(1567): startTime: 45238
03-28 10:04:26.870: I/MainActivity(1567): clientCount: 0
03-28 10:04:26.870: I/MainActivity(1567): label: 0
03-28 10:04:26.870: I/MainActivity(1567): crashCount:0
03-28 10:04:26.870: I/MainActivity(1567): flag: 9
03-28 10:04:26.870: I/MainActivity(1567): lastTime: 45238
03-28 10:04:26.870: I/MainActivity(1567): restarting: 0
03-28 10:04:26.870: I/MainActivity(1567): isForeground: false
03-28 10:04:26.870: I/MainActivity(1567): isStart: true
03-28 10:04:26.870: I/MainActivity(1567): pid: 807
03-28 10:04:26.870: I/MainActivity(1567): uid: 1001
03-28 10:04:26.870: I/MainActivity(1567): ====================================
03-28 10:04:26.870: I/MainActivity(1567): name: ComponentInfo{com.sohu.inputmethod.sogou/com.sohu.inputmethod.sogou.SogouIME}
03-28 10:04:26.870: I/MainActivity(1567): packageName: android
03-28 10:04:26.870: I/MainActivity(1567): proName: com.sohu.inputmethod.sogou
03-28 10:04:26.870: I/MainActivity(1567): startTime: 20137
03-28 10:04:26.870: I/MainActivity(1567): clientCount: 1
03-28 10:04:26.870: I/MainActivity(1567): label: 17040629
03-28 10:04:26.870: I/MainActivity(1567): crashCount:0
03-28 10:04:26.870: I/MainActivity(1567): flag: 0
03-28 10:04:26.870: I/MainActivity(1567): lastTime: 20279
03-28 10:04:26.870: I/MainActivity(1567): restarting: 0
03-28 10:04:26.880: I/MainActivity(1567): isForeground: false
03-28 10:04:26.880: I/MainActivity(1567): isStart: false
03-28 10:04:26.880: I/MainActivity(1567): pid: 734
03-28 10:04:26.880: I/MainActivity(1567): uid: 10062
03-28 10:04:26.880: I/MainActivity(1567): ====================================
03-28 10:04:26.880: I/MainActivity(1567): name: ComponentInfo{com.android.phone/com.android.phone.BluetoothPhoneService}
03-28 10:04:26.880: I/MainActivity(1567): packageName: null
03-28 10:04:26.880: I/MainActivity(1567): proName: com.android.phone
03-28 10:04:26.880: I/MainActivity(1567): startTime: 23842
03-28 10:04:26.880: I/MainActivity(1567): clientCount: 1
03-28 10:04:26.880: I/MainActivity(1567): label: 0
03-28 10:04:26.880: I/MainActivity(1567): crashCount:0
03-28 10:04:26.880: I/MainActivity(1567): flag: 9
03-28 10:04:26.880: I/MainActivity(1567): lastTime: 23842
03-28 10:04:26.880: I/MainActivity(1567): restarting: 0
03-28 10:04:26.880: I/MainActivity(1567): isForeground: false
03-28 10:04:26.880: I/MainActivity(1567): isStart: true
03-28 10:04:26.890: I/MainActivity(1567): pid: 807
03-28 10:04:26.890: I/MainActivity(1567): uid: 1001
03-28 10:04:26.890: I/MainActivity(1567): ====================================
03-28 10:04:26.890: I/MainActivity(1567): name: ComponentInfo{com.android.contacts/com.sprd.contacts.BatchOperationService}
03-28 10:04:26.890: I/MainActivity(1567): packageName: null
03-28 10:04:26.890: I/MainActivity(1567): proName: com.android.contacts
03-28 10:04:26.890: I/MainActivity(1567): startTime: 47945
03-28 10:04:26.890: I/MainActivity(1567): clientCount: 1
03-28 10:04:26.890: I/MainActivity(1567): label: 0
03-28 10:04:26.890: I/MainActivity(1567): crashCount:0
03-28 10:04:26.890: I/MainActivity(1567): flag: 0
03-28 10:04:26.890: I/MainActivity(1567): lastTime: 47945
03-28 10:04:26.890: I/MainActivity(1567): restarting: 0
03-28 10:04:26.890: I/MainActivity(1567): isForeground: false
03-28 10:04:26.890: I/MainActivity(1567): isStart: false
03-28 10:04:26.890: I/MainActivity(1567): pid: 1276
03-28 10:04:26.890: I/MainActivity(1567): uid: 10003
03-28 10:04:26.890: I/MainActivity(1567): ====================================
获取最近访问的任务RecentTaskInfo
List<RecentTaskInfo> list5 = activityManager.getRecentTasks(20, 1);// RECENT_WITH_EXCLUDED=1,
// RECENT_IGNORE_UNAVAILABLE=2
if (list5.size() != 0) {
for (RecentTaskInfo info : list5) {
Intent intent = info.baseIntent;// 触发该任务的Intent
Log.i(TAG, "intent: " + intent);
CharSequence sequence = info.description;// 描述性文字
Log.i(TAG, "sequence: " + sequence);
int id = info.id;// 如果是运行中的TASK,唯一标识该任务,如果不是,为-1
Log.i(TAG, "id: " + id);
ComponentName name = info.origActivity;// 触发任务的第一个activity
Log.i(TAG, "name: " + name);
int perId = info.persistentId;// 当前任务的唯一标识
Log.i(TAG, "perId: " + perId);
Log.i(TAG, "============================================");
}
}
运行程序输出如下:
03-28 10:28:39.853: I/MainActivity(2698): intent: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.ibm.activitymanager/.MainActivity }
03-28 10:28:39.853: I/MainActivity(2698): sequence: null
03-28 10:28:39.853: I/MainActivity(2698): id: 8
03-28 10:28:39.853: I/MainActivity(2698): name: null
03-28 10:28:39.853: I/MainActivity(2698): perId: 8
03-28 10:28:39.853: I/MainActivity(2698): ============================================
03-28 10:28:39.853: I/MainActivity(2698): intent: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000000 cmp=com.android.launcher3/.Launcher }
03-28 10:28:39.853: I/MainActivity(2698): sequence: null
03-28 10:28:39.853: I/MainActivity(2698): id: 1
03-28 10:28:39.853: I/MainActivity(2698): name: null
03-28 10:28:39.853: I/MainActivity(2698): perId: 1
03-28 10:28:39.853: I/MainActivity(2698): ============================================
03-28 10:28:39.853: I/MainActivity(2698): intent: Intent { flg=0x54840000 cmp=com.android.stk/.StkDialogActivity }
03-28 10:28:39.853: I/MainActivity(2698): sequence: null
03-28 10:28:39.853: I/MainActivity(2698): id: -1
03-28 10:28:39.853: I/MainActivity(2698): name: null
03-28 10:28:39.853: I/MainActivity(2698): perId: 3
03-28 10:28:39.853: I/MainActivity(2698): ============================================
03-28 10:28:39.853: I/MainActivity(2698): intent: Intent { act=com.sprd.settings.APPLICATION_SPRD_USB_SETTINGS flg=0x10a00000 cmp=com.android.settings/com.sprd.settings.SprdUsbSettings }
03-28 10:28:39.853: I/MainActivity(2698): sequence: null
03-28 10:28:39.853: I/MainActivity(2698): id: -1
03-28 10:28:39.853: I/MainActivity(2698): name: null
03-28 10:28:39.853: I/MainActivity(2698): perId: 2
03-28 10:28:39.853: I/MainActivity(2698): ============================================
当然别忘了添加权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
总结
ActivityManager有5个内部类,分别代表了应用程序中各种信息对象,我们通过ActivityManager提供的方法分别获得了他们的对象,然后通过打印他们的信息查看他们具体的内容,做到了一个直观的了解。对于只啃文档,揣测方法的意思更有利于掌握,说一说,看一万遍代表,不如敲一行来的管用。