Android中ActivityManager学习笔记(2)-RunningServiceInfo

(昨天有事没写完,今天继续)

 

获取当前服务信息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提供的方法分别获得了他们的对象,然后通过打印他们的信息查看他们具体的内容,做到了一个直观的了解。对于只啃文档,揣测方法的意思更有利于掌握,说一说,看一万遍代表,不如敲一行来的管用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值