0

我想要一种方法来获取 android 中当前的整体 cpu 使用情况!我使用了我在这个网站上找到的一种方法,如下所述。

private float readUsage() {
    try {
        RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r");
        String load = reader.readLine();

        String[] toks = load.split(" ");

        long idle1 = Long.parseLong(toks[5]);
        long cpu1 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
              + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);

        try {
            Thread.sleep(360);
        } catch (Exception e) {}

        reader.seek(0);
        load = reader.readLine();
        reader.close();

        toks = load.split(" ");

        long idle2 = Long.parseLong(toks[5]);
        long cpu2 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
            + Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);

        return (float)(cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1));

    } catch (IOException ex) {
        ex.printStackTrace();
    }

    return 0;
} 

但是这个方法只返回一个浮点值。我需要的是当前的使用统计,比如系统使用的百分比,以及用户使用的百分比!谁能帮我这个。一个教程会很好,但是如果有人足够慷慨地给我一个好的代码,那将是我的荣幸!

谢谢你!

4

2 回答 2

0

从 linux proc 手册页:

/proc/stat 内核/系统统计信息。因建筑而异。常见条目包括:

          cpu  3357 0 4313 1362393
                 The   amount  of  time,  measured  in  units  of  USER_HZ
                 (1/100ths  of  a  second  on  most   architectures,   use
                 sysconf(_SC_CLK_TCK) to obtain the right value), that the
                 system spent in user mode, user mode  with  low  priority
                 (nice),  system  mode,  and  the idle task, respectively.
                 The last value should be USER_HZ times the  second  entry
                 in the uptime pseudo-file.

您可能还想查看 AOSP 平台/系统/核心/工具箱中“顶部”的来源

于 2012-07-11T18:41:45.013 回答
0

当您查看“proc/stat”中的统计信息时

  • 它将为您提供整体 CPU 使用情况(内核模式 + 用户模式)
  • 您只能根据每个进程的系统和用户模式获取 CPU 使用率 proc/[pid]/stat - 第 14 个参数:- jiffies 中的用户模式 ​​- 第 15 个参数:- jiffies 中的内核模式
  • 计算所有进程/pid 的内核模式使用率,并可以将其视为系统 CPU 使用率......
于 2013-05-09T10:20:49.030 回答