Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 527|回复: 0

[实例教程]ANDROID之系统正在运行的ACTIVITY和SERVICES

[复制链接]

该用户从未签到

发表于 2011-10-22 12:37:34 | 显示全部楼层 |阅读模式
你是不是很想知道当前状态下,系统在后台正运行着的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两个类,我们可以获取的信息


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-22 18:02 , Processed in 0.376162 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表