public static List getTaskInfos(Context context) {
//首先擷取到程序管理器
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//擷取到運作的程序
List runningAppProcesses = activityManager.getRunningAppProcesses();
//初始化程序的集合
List 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(應用程式包名);