TaskUtils
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;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.