public class Test {
public static float getProcessCpuRate() {
float totalCpuTime1 = getTotalCpuTime();
float processCpuTime1 = getAppCpuTime();
try {
Thread.sleep(360);
} catch (Exception e) {
}
float totalCpuTime2 = getTotalCpuTime();
float processCpuTime2 = getAppCpuTime();
float cpuRate = 100 * (processCpuTime2 - processCpuTime1) / (totalCpuTime2 - totalCpuTime1);
return cpuRate;
}
public static long getTotalCpuTime() { // 获取系统总CPU使用时间
String[] cpuInfos = null;
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/stat")), 1000);
String load = reader.readLine();
reader.close();
cpuInfos = load.split(" ");
} catch (IOException ex) {
ex.printStackTrace();
}
long totalCpu = Long.parseLong(cpuInfos[2]) + Long.parseLong(cpuInfos[3]) + Long.parseLong(cpuInfos[4]) + Long.parseLong(cpuInfos[6]) + Long.parseLong(cpuInfos[5]) + Long.parseLong(cpuInfos[7]) + Long.parseLong(cpuInfos[8]);
return totalCpu;
}
public static long getAppCpuTime() { // 获取应用占用的CPU时间
String[] cpuInfos = null;
try {
int pid = android.os.Process.myPid();
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/" + pid + "/stat")), 1000);
String load = reader.readLine();
reader.close();
cpuInfos = load.split(" ");
} catch (IOException ex) {
ex.printStackTrace();
}
long appCpuTime = Long.parseLong(cpuInfos[13]) + Long.parseLong(cpuInfos[14]) + Long.parseLong(cpuInfos[15]) + Long.parseLong(cpuInfos[16]);
return appCpuTime;
}
}
/**
* 测试代码
*/
@SuppressWarnings("unused")
private void get() {
ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> processinfo = am.getRunningAppProcesses();
for (RunningAppProcessInfo runningAppProcessInfo : processinfo) {
if (runningAppProcessInfo.processName.equals(getPackageName())) {
int pid = runningAppProcessInfo.pid;// 获得进程的id
long memsize = am.getProcessMemoryInfo(new int[] { pid })[0].getTotalPrivateDirty() * 1024;
Lg.Li("内存消耗为:" + Formatter.formatFileSize(getApplication(), memsize));
}
}
}