Android5.0之后获取后台正在运行的程序

来源:互联网 发布:税务申报软件 编辑:程序博客网 时间:2024/06/05 08:37

我们知道在5.0以及之前的版本上获取后台正在运行的程序可以通过ActivityManager.getRunningAppProcesses();来获取一个RunningAppProcessInfo的list,但是5.0之后的版本此方法只能是获取自己的应用信息,那么接下来我们介绍下5.0之后版本的处理:

List<RunningAppProcessInfo> runningAppsInfo = new ArrayList<RunningAppProcessInfo>();        PackageManager pm = context.getPackageManager();        ActivityManager am = (ActivityManager) context                .getSystemService(Context.ACTIVITY_SERVICE);        List<ActivityManager.RunningServiceInfo> runningServices = am                .getRunningServices(Integer.MAX_VALUE);        for (ActivityManager.RunningServiceInfo service : runningServices) {            String pkgName = service.process.split(":")[0];            try {                RunningAppProcessInfo item = new RunningAppProcessInfo();                item.pkgList = new String[] { pkgName };                item.pid = service.pid;                item.processName = service.process;                item.uid = service.uid;                runningAppsInfo.add(item);            } catch (NameNotFoundException e) {            }        }

我们通过am.getRunningServices(Integer.MAX_VALUE)来获取正在后台运行的Services,而Services和应用拥有同样的Pid、Uid以及ProcessName,所以就可以构造一个新的RunningAppProcessInfo了。

获取指定app运行在前台还是后台,网上有6种方法(包括5.0以上的处理),可以参考:
http://p.codekk.com/detail/Android/wenmingvs/AndroidProcess

0 0
原创粉丝点击