TaskUtils

来源:互联网 发布:大学生网络防诈骗 ppt 编辑:程序博客网 时间:2024/06/05 20:06
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;


import zz.itcast.mobileguardz10.R;
import zz.itcast.mobileguardz10.bean.TaskInfoBean;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.SystemClock;
import android.text.GetChars;


public class TaskUtils {


/**
* 获得正在运行的进程个数
* @param ctx
* @return
*/
public static int getRunningProcCount(Context ctx){

ActivityManager am = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();

return runningAppProcesses.size();
}

/**
* 获得可用内存
* @param ctx
* @return
*/
public static long getAvaiMemInfo(Context ctx) {


ActivityManager am = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo outInfo = new MemoryInfo();
am.getMemoryInfo(outInfo);


return outInfo.availMem; // 可用内存


}

/**
* 获得总内存大小 
* @return
*  byte 
*/
public static long getTotalMemInfo() {
// 读取  /proc/meminfo 文件

try {
String path = "/proc/meminfo";
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path)));

String line = reader.readLine(); // MemTotal:         513744 kB
StringBuffer sb = new StringBuffer();

for(int i=0;i<line.length();i++){
char c = line.charAt(i);
if(c >='0' && c<='9'){
sb.append(c);
}
}

sb.toString();  // 513744

return Long.parseLong(sb.toString()) * 1024; //  513744 KB 


} catch (Exception e) {
e.printStackTrace();
}
return 0;
}

/**
* 获得所有的正在运行的进程信息
* @param ctx
* @return
*/
public static List<TaskInfoBean> getAllTaskInfo(Context ctx){
List<TaskInfoBean> allTaskList = new ArrayList<TaskInfoBean>();

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

PackageManager pm = ctx.getPackageManager();

// 获得所有的正在运行的进程信息
List<RunningAppProcessInfo> runningAppList = am.getRunningAppProcesses();
for (RunningAppProcessInfo runningAppInfo : runningAppList) {
TaskInfoBean taskBean = new TaskInfoBean();


allTaskList.add(taskBean);


// 获得进程占用的内存大小
// 获得指定进程的内存信息, 参数有多少个进程ID,返回值就有多少个 MemoryInfo
android.os.Debug.MemoryInfo[] processMemoryInfo = am
.getProcessMemoryInfo(new int[] { runningAppInfo.pid });
taskBean.memSize = processMemoryInfo[0].getTotalPrivateDirty() * 1024;


try {
// 指定包名
taskBean.packageName = runningAppInfo.processName; // 进程名称
// 与包名是一样的


ApplicationInfo applicationInfo = pm.getApplicationInfo(
taskBean.packageName, 0);


// 应用的名称
taskBean.appName = applicationInfo.loadLabel(pm).toString();
// 应用图标
taskBean.appIcon = applicationInfo.loadIcon(pm);


// 判断是否是系统应用
if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
taskBean.isSys = true;
} else {
taskBean.isSys = false;
}


} catch (Exception e) {
e.printStackTrace();


// 有些C进程,不能android应用,就不能获得应用程序信息,所以,设置一些默认值
// 应用的名称
taskBean.appName = taskBean.packageName;
// 应用图标
taskBean.appIcon = ctx.getResources().getDrawable(R.drawable.ic_launcher);
// 系统进程
taskBean.isSys = true;


}
}

SystemClock.sleep(1000); // 休眠1秒,模拟耗时操作

return allTaskList;
}


}
0 0
原创粉丝点击