http://download.csdn.net/detail/zhoujiyu123/4441637有个现成的代码

解决方案 »

  1.   

    谢谢你的回复.
    你发的这个链接, 是获取系统总的CPU使用率的.
    我需要获取的是本应用的CPU使用率.
      

  2.   

    已经解决. 获取系统CPU使用时间和应用CPU使用时间, 作比较就得出应用的CPU使用率下面贴代码:
    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(" ");
    } 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;
    } private 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;
    }
      

  3.   

    当然也可以使用ADB的shell命令行来查看CPU使用率:
    1. usb 连接手机
    2. 在命令行输入 adb shell, 进入 shell
    3. 键入命令 top -m 100 | grep com.***.***, grep后面是应用的包名称, 用来过滤关键字如下图所示:
    C:\Users\David Ding>adb shell
    root@p940:/ # top -m 100 | grep com.ding.dingrecorder
    top -m 100 | grep com.ding.dingrecorder
    24807  1   0% S    11 501096K  45520K  fg u0_a68   com.ding.dingrecorder
    24807  1   5% S    11 501232K  45676K  fg u0_a68   com.ding.dingrecorder
      

  4.   

    感觉不对那,我通过楼主的代码得到的值和adb shell top -m 100比较,发现值不同,有很大差距