/** * Created by wofu on 2018/4/26. * 进程管理--系统信息 */ public class SystemjinchengManagerfoUtils extends Object { /* * 正在运行的进程数量 * */ public static int getRunningProgressCount(Context context){ //包程序管理器,程序管理器PackageManager 静态的 //进程管理器ActivityManger 动态的 ActivityManager am= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> infos =am.getRunningAppProcesses(); return infos.size(); } /* * 剩余内存信息 * * */ public static long getAvailableMemory(Context context){ ActivityManager am= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo meminfo=new ActivityManager.MemoryInfo(); am.getMemoryInfo(meminfo); return meminfo.availMem; } /* * 总内存信息 * * */ public static long totalMemory(Context context){ ActivityManager am= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo meminfo=new ActivityManager.MemoryInfo(); am.getMemoryInfo(meminfo); return meminfo.totalMem; } }
/** * Created by wofu on 2018/4/27. * 具体进程信息,内存信息 */ public class TaskInfoJinchengMananger extends Object { /* * * */ public static List<TaskinfoManager> getTaskInfos(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); PackageManager pm = context.getPackageManager(); List<ActivityManager.RunningAppProcessInfo> progressInfos = new ArrayList<ActivityManager.RunningAppProcessInfo>(); List<TaskinfoManager> taskinfos=new ArrayList<>(); for (ActivityManager.RunningAppProcessInfo progressInfo : progressInfos) { TaskinfoManager taskInfo=new TaskinfoManager(); //应用程序的包名 String packname = progressInfo.processName; Debug.MemoryInfo[] memoryinfos = am.getProcessMemoryInfo(new int[]{progressInfo.pid});//内存信息 long memsize = memoryinfos[0].getTotalPrivateDirty() * 1000; taskInfo.setMemsize(memsize); try { // pm.getPackageInfo(packname,0).applicationInfo;//或者用下面的方法 ApplicationInfo applicationinfo = pm.getApplicationInfo(packname, 0); Drawable icon = applicationinfo.loadIcon(pm); taskInfo.setIcon(icon); String name = applicationinfo.loadLabel(pm).toString(); if ((applicationinfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { //用户进程 } else { //系统进程 } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } taskinfos.add(taskInfo); } return taskinfos; } }
/** * Created by wofu on 2018/4/27. * 进程信息的业务bean */ public class TaskinfoManager extends Object { private Drawable icon; private String name; private String packname; private long memsize; private boolean userTask;//是否是用户进程 public Drawable getIcon() { return icon; } public String getName() { return name; } public String getPackname() { return packname; } public long getMemsize() { return memsize; } public boolean isUserTask() { return userTask; } public void setIcon(Drawable icon) { this.icon = icon; } public void setName(String name) { this.name = name; } public void setPackname(String packname) { this.packname = packname; } public void setMemsize(long memsize) { this.memsize = memsize; } public void setUserTask(boolean userTask) { this.userTask = userTask; } }
---杀死进程-----
/* * 一键清理 * */ @SuppressLint("MissingPermission") public void killAll(View view){ ActivityManager am= (ActivityManager) getSystemService(ACTIVITY_SERVICE); List<TaskinfoManager>infos =TaskInfoJinchengMananger.getTaskInfos(this); for(TaskinfoManager info:infos){ //如果被勾选,就杀死进程---勾选的这个没有做, am.killBackgroundProcesses(info.getPackname()); } }