赞
踩
话不多说直接上代码:讲述两种CPU
- <span style="font-size:14px;">private 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(" ");
- // System.out.println("cpulist:"+Arrays.toString(cpuInfos));
- } 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;
- }</span>

注:这种方法只获得总的CPU耗时信息
AppCpuTime
- private static long getAppCpuTime(int pid) { // 获取应用占用的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;
- }

接下来重点来啦:
- public static float getProcessCpuRate(int pid) // 获得应用cpu占用率
- {
- float CPU = 0;
- try {
- float totalCpuTime1 = getTotalCpuTime();
- float processCpuTime1 = getAppCpuTime(pid);
- try {
- Thread.sleep(300);
- } catch (Exception e) {
- }
- float totalCpuTime2 = getTotalCpuTime();
- float processCpuTime2 = getAppCpuTime(pid);
- float cpuRate = 100 * (processCpuTime2 - processCpuTime1)
- / (totalCpuTime2 - totalCpuTime1);
- String str = new DecimalFormat("0.00").format(cpuRate);
- CPU = Float.parseFloat(str);
- } catch (Exception e) {
- }
- return CPU;
- }

以上读取方式都是采用bufferReader读取指定路径中的信息。这中方式简单易操作。 接下来给大家讲解另一种方式,读取CPU相关信息:在我项目中...........MyUtil类里。同样采用的是bufferReader。返回的是一个ArrayList集合,存放了多核的耗时总时间时间eg:cpu cpu1 cpu2 cpu 3...........等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。