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