android之系统正在运行的activity和services
你是不是很想知道当前状态下,系统在后台正运行着的activity呢?这里,让我们一起来实现吧。
- /**
- * 获取系统中正在运行的任务信息(强调下,任务是多个activity的集合)
- */
- public void run(){
- String info = "" ;
- // 获取的正在运行的activity的最大数量(防止太多,系统承受不了啊)、
- int maxNum = 40;
- // ActivityManager的功能是为系统中所有运行着的Activity交互提供了接口,主要的接口围绕着运行中的进程信息,任务信息,服务信息等
- ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
- /**
- * 获取正在运行的任务这里一定要注意,这里我们获取的时候,
- * 你的任务或者其中的activity可能没结束,但是当你在后边使用的时候,很有可能已经被kill了哦。
- * 意思很简单,系统返给你的正在运行的task,是暂态的,仅仅代表你调用该方法时系统中的状态,
- * 至于后边是否发生了该变,系统概不负责、
- */
- List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(maxNum);
- for(ActivityManager.RunningTaskInfo taskInfo:runningTasks){
- info+="一个任务信息开始:\n";
- info+="当前任务中正处于运行状态的activity数目:"+taskInfo.numRunning;
- info+="当前任务中的activity数目: "+taskInfo.numActivities;
- info+="启动当前任务的activity名称:"+taskInfo.baseActivity.getClassName();
- }
注意:这里要给android.permission.GET_TASKS权限哦。
上面的代码,我们只能获取到运行中的task(任务),那么如何获得后台运行的service信息呢?
请看代码:
- /***
- * 获取运行在后台中的service
- */
- private void run2(){
- String info = "";
- int maxNum = 30;
- ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
- // 注意这里获取的方法和返回值的类型都变化了啊
- List<ActivityManager.RunningServiceInfo> serivces = activityManager.getRunningServices(maxNum);
- for(RunningServiceInfo service:serivces){
- info = "一个service信息开始:\n";
- info+="当前service的启动时间:"+service.activeSince;
- info+="链接到当前service客户端的数量:"+service.clientCount;
- }
- }
---------------------------------------------------------------------------------------
下面,我们展示下,对于RunningTaskInfo和RunningServiceInfo两个类,我们可以获取的信息


浙公网安备 33010602011771号