擷取系統啟動並執行所有進程的資訊,擷取進程資訊
自己寫的一些工具類
public class TaskInfoUtils { /** * 擷取全部進程的資訊 * * @param pContext * @return */ public static List<TaskInfo> getTaskInfos(Context pContext) { // 1擷取到ActivityManager和PackageManager ActivityManager _ActivityManager = (ActivityManager) pContext .getSystemService(pContext.ACTIVITY_SERVICE); PackageManager _PackageManager = pContext.getPackageManager(); List<TaskInfo> _TaskInfos = new ArrayList<TaskInfo>(); // 2擷取到所有在啟動並執行進程 List<RunningAppProcessInfo> _RunningAppProcessInfos = _ActivityManager .getRunningAppProcesses(); //3 遍曆進程,擷取他的資訊 for (RunningAppProcessInfo runningAppProcessInfo : _RunningAppProcessInfos) { TaskInfo _TaskInfo = new TaskInfo(); MemoryInfo[] memoryInfos = _ActivityManager .getProcessMemoryInfo(new int[] { runningAppProcessInfo.pid }); long _MemSize = memoryInfos[0].getTotalPrivateDirty() * 1024;// 進程消耗的記憶體 String _packageName = runningAppProcessInfo.processName;// 進程的包 ApplicationInfo _ApplicationInfo; try { _ApplicationInfo = _PackageManager.getApplicationInfo( _packageName, 0); Drawable _Icon = _ApplicationInfo.loadIcon(_PackageManager);// 程式表徵圖 String _Name = _ApplicationInfo.loadLabel(_PackageManager) .toString();// 程式名 _TaskInfo.setIcon(_Icon); _TaskInfo.setMemsize(_MemSize); _TaskInfo.setName(_Name); _TaskInfo.setPackname(_packageName); if ((_ApplicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { // 使用者進程 _TaskInfo.setUserTask(true); } else { // 系統進程 _TaskInfo.setUserTask(false); } _TaskInfos.add(_TaskInfo); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return _TaskInfos; } class TaskInfo { private Drawable icon; private String name; private long memsize; private boolean userTask; private String packname; public Drawable getIcon() { return icon; } public void setIcon(Drawable icon) { this.icon = icon; } public String getName() { return name; } public void setName(String name) { this.name = name; } public long getMemsize() { return memsize; } public void setMemsize(long memsize) { this.memsize = memsize; } public boolean isUserTask() { return userTask; } public void setUserTask(boolean userTask) { this.userTask = userTask; } public String getPackname() { return packname; } public void setPackname(String packname) { this.packname = packname; } @Override public String toString() { return "TaskInfo [ name=" + name + ", memsize=" + memsize + ", userTask=" + userTask + ", packname=" + packname + "]"; }}}