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(应用程序包名);