Android进程管理之工具类taskutils

来源:互联网 发布:linux 中文文件名乱码 编辑:程序博客网 时间:2024/05/21 04:23

public class TaskUtils {

/**  * 获取当前正在进行的进程数  * @param context  * @return  */   //返回正在运行的APP进程数量public static int getRunningAppProcessInfoSize(Context context){      ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);      return am.getRunningAppProcesses().size();  }  /**  * 获取系统可用内存  * @param context  * @return  */   //获取系统目前可用内存public static long getAvailMem(Context context){      ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);      //得到可用内存      MemoryInfo outInfo = new MemoryInfo();      am.getMemoryInfo(outInfo);      long availMem = outInfo.availMem; //单位是byte      return availMem;  }  /**  * 获取系统所有的进程信息列表  * @param context  * @return  */   //获取当前正在运行的APP进程集合public static List<TaskInfo> getTaskInfos(Context context){      List<TaskInfo> taskInfos  = new ArrayList<TaskInfo>();      PackageManager pm = context.getPackageManager();      ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);      List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();      for(RunningAppProcessInfo info : runningAppProcesses){          TaskInfo taskInfo = new TaskInfo();          //进程名称          String packageName = info.processName;          taskInfo.setPackageName(packageName);          try {              ApplicationInfo applicationInfo = pm.getApplicationInfo(packageName, 0);              //图标              Drawable task_icon = applicationInfo.loadIcon(pm);              if(task_icon == null){                  //获取应用图标失败                taskInfo.setTask_icon(context.getResources().getDrawable(R.drawable.ic_launcher));              }else{                  taskInfo.setTask_icon(task_icon);              }              //名称              String task_name = applicationInfo.loadLabel(pm).toString();              taskInfo.setTask_name(task_name);          } catch (NameNotFoundException e) {              // TODO Auto-generated catch block              e.printStackTrace();          }          //进程id          int pid = info.pid;          taskInfo.setPid(pid);          //获取进程占用的内存          android.os.Debug.MemoryInfo[] processMemoryInfo = am.getProcessMemoryInfo(new int[]{pid});          android.os.Debug.MemoryInfo memoryInfo  = processMemoryInfo[0];          long totalPrivateDirty = memoryInfo.getTotalPrivateDirty(); //KB          taskInfo.setTask_memory(totalPrivateDirty);          taskInfos.add(taskInfo);      }      return taskInfos;  }  

}

0 0