手机卫士之进程管理

一、先来说获得进程数。

1.正在运行的进程数

   我们可以利用ActivityManager这个类getRunningAppProcesses().size,那么ActivityManager又是怎么来的呢?

    我们可以利用上下文提供的系统服务获得,即

   ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

2.得到内存    总内存= 可用内存+每个进程占有的内存

    可用内存很简单的得到,利用MemoryInfo这个类的对象做参数即返回,得到他的对象availMem就能得到可用内存

   下面就是每个进程占有的内存,先将每个进程信息封装(进程id  : pid)。

   先得到包管理器

     PackageManager  pm = context.getPackageManager();

   包名==进程名

List<RunningAppProcessInfo> RunningInfos = am.getRunningAppProcesses();

通过不断的遍历RunningInfos 将数据设置的TaskInfo中

     通过包管理器利用包名的得到

ApplicationInfo appinfo = pm.getApplicationInfo(packageName, 0);
                       Drawable icon = appinfo.loadIcon(pm);
                       String name = (String) appinfo.loadLabel(pm);
                       taskinfo.setIcon(icon);
                       taskinfo.setTask_name(name);
                       int pid = RunningInfo.pid;
taskinfo.setPid(pid);
//通过进程id 得到进程的内存信息
MemoryInfo[] outInfo = am.getProcessMemoryInfo(new int[]{pid});
long task_memory = outInfo[0].getTotalPrivateDirty();
taskinfo.setTask_memory(task_memory);
 

猜你喜欢

转载自270827204.iteye.com/blog/2253925