1. 程式人生 > >Android5.0之後獲取後臺正在執行的程式

Android5.0之後獲取後臺正在執行的程式

我們知道在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了。