android獲取程序資訊,執行記憶體資訊
阿新 • • 發佈:2019-02-07
public static List<TaskInfo> getTaskInfos(Context context) { //首先獲取到程序管理器 ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); //獲取到執行的程序 List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses(); //初始化程序的集合 List<TaskInfo> taskInfos = new ArrayList<>(); //迭代所有正在執行的程序 for (ActivityManager.RunningAppProcessInfo runningAppProcess : runningAppProcesses) { TaskInfo taskInfo = new TaskInfo(); //獲取到程序的名字 String processName = runningAppProcess.processName; taskInfo.setAppPackageName(processName); //獲取到程序的記憶體的基本資訊 Debug.MemoryInfo[] processMemoryInfo = activityManager.getProcessMemoryInfo(new int[]{runningAppProcess.pid}); int totalPrivateDirty = processMemoryInfo[0].getTotalPrivateDirty() * 1024; taskInfo.setMemorySize(totalPrivateDirty); } return taskInfos; }
通過讀取系統檔案的方式,獲得執行記憶體大小
殺死程序(重要系統程序殺不掉)//獲取總記憶體的大小 private long getTotalMemory() { // MemTotal: 341780 kB try { FileInputStream fis = new FileInputStream(new File("/proc/meminfo")); //包裝一個一行行讀取的流 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fis)); //取到所有的記憶體資訊 String memTotal = bufferedReader.readLine(); StringBuffer sb = new StringBuffer(); for (char c : memTotal.toCharArray()) { if (c >= '0' && c <= '9') { sb.append(c); } } //為了方便格式化 所以乘以1024 long totalMemory = Long.parseLong(sb.toString()) * 1024; return totalMemory; } catch (Exception e) { e.printStackTrace(); return 0; } }
//獲取到程序管理者
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
//殺死後臺程序
activityManager.killBackgroundProcesses(應用程式包名);