您的位置:首页 > 移动开发 > Android开发

Android进程管理之工具类taskutils

2016-07-11 09:00 387 查看
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;
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: