android 之获取系统进程信息、内存信息、杀死进程


/**
 * 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());
       }

    }

猜你喜欢

转载自blog.csdn.net/u011146511/article/details/80103353
今日推荐