我想获得Android每100毫秒或500毫秒的平均CPU使用率。我曾尝试使用top
和dumpsys cpuinfo
,但它们都没有告诉我平均使用情况或时间戳。那么如何获得平均使用量呢?
我注意到/proc/stat
中有一些CPU使用情况信息,我可以使用/proc/stat
计算平均CPU使用率吗?
答案 0 :(得分:2)
以前在SO上回答:
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;
}
您可以查看更多信息Get Memory Usage in Android
答案 1 :(得分:0)
我已经测试了Krypton的解决方案,并得出了错误的数字(大约22%,而通过adb shell top获得了大约48%)。 因此,答案可能无法在android 7上正常运行,或者存在一些错误。
我在this question找到了一个可行的解决方案,而Souch提供的code已经为我们完成了工作。只需使用他的CpuInfo类即可在每次需要时获取平均负载。