How to get system process information, memory information and kill process in android


/**
 * Created by wofu on 2018/4/26.
 * Process management--system information
 */

public class SystemjinchengManagerfoUtils extends Object {

    /*
    * the number of running processes
    * */
    public static int getRunningProgressCount(Context context){
        //Package program manager, program manager PackageManager static
        //Process manager ActivityManger dynamic

      ActivityManager am= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> infos =am.getRunningAppProcesses();

        return infos.size();
    }

    /*
    * Remaining memory information
    *
    * */
    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;
    }


    /*
        * Total memory information
        *
        * */
    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.
 * Specific process information, memory information
 */

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();

            // package name of the application
            String packname = progressInfo.processName;
            Debug.MemoryInfo[] memoryinfos = am.getProcessMemoryInfo(new int[]{progressInfo.pid});//Memory information
            long memsize = memoryinfos[0].getTotalPrivateDirty() * 1000;
            taskInfo.setMemsize(memsize);
            try {
// pm.getPackageInfo(packname,0).applicationInfo;//or use the following method
                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) {
                 // user process

                } else {
                    //system process

                }

            } catch (PackageManager.NameNotFoundException e) {
                e.printStackTrace ();
            }
           taskinfos.add(taskInfo);
        }

        return taskinfos;
    }
}

/**
 * Created by wofu on 2018/4/27.
 * Business bean for process information
 */

public class TaskinfoManager extends Object {
    private Drawable icon;
    private  String name;
    private  String  packname;
    private  long memsize;
    private boolean userTask;//Is it a user process

    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;
    }

}

---KILL PROCESS-----

/*
    * One-click cleaning
    * */
    @SuppressLint("MissingPermission")
    public  void killAll(View view){
        ActivityManager am= (ActivityManager) getSystemService(ACTIVITY_SERVICE);
   List<TaskinfoManager>infos =TaskInfoJinchengMananger.getTaskInfos(this);
       for(TaskinfoManager info:infos){
           //If it is checked, kill the process---the checked one is not done,
           am.killBackgroundProcesses(info.getPackname());
       }

    }

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325210795&siteId=291194637