Android5.0之後獲取後臺正在執行的程式
阿新 • • 發佈:2019-01-27
我們知道在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了。