Androidの全体的なCPU使用率を取得したいのですが、Windowsのタスクマネージャーと同じです。 Androidに含まれているtop
プログラムの出力を解析できますが、同じことを行うAPI呼び出しがあれば、もっと良いでしょう。
ポインタはありますか?
[〜#〜] attention [〜#〜]:この回答は古く、[〜#〜] not [〜#〜] Android強化されたセキュリティメカニズムのため。
(プロセスごとではなく)完全なCPU使用率については、以下を使用できます。
/**
*
* @return integer Array with 4 elements: user, system, idle and other cpu
* usage in percentage.
*/
private int[] getCpuUsageStatistic() {
String tempString = executeTop();
tempString = tempString.replaceAll(",", "");
tempString = tempString.replaceAll("User", "");
tempString = tempString.replaceAll("System", "");
tempString = tempString.replaceAll("IOW", "");
tempString = tempString.replaceAll("IRQ", "");
tempString = tempString.replaceAll("%", "");
for (int i = 0; i < 10; i++) {
tempString = tempString.replaceAll(" ", " ");
}
tempString = tempString.trim();
String[] myString = tempString.split(" ");
int[] cpuUsageAsInt = new int[myString.length];
for (int i = 0; i < myString.length; i++) {
myString[i] = myString[i].trim();
cpuUsageAsInt[i] = Integer.parseInt(myString[i]);
}
return cpuUsageAsInt;
}
private String executeTop() {
Java.lang.Process p = null;
BufferedReader in = null;
String returnString = null;
try {
p = Runtime.getRuntime().exec("top -n 1");
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
while (returnString == null || returnString.contentEquals("")) {
returnString = in.readLine();
}
} catch (IOException e) {
Log.e("executeTop", "error in getting first line of top");
e.printStackTrace();
} finally {
try {
in.close();
p.destroy();
} catch (IOException e) {
Log.e("executeTop",
"error in closing and destroying top process");
e.printStackTrace();
}
}
return returnString;
}
それを楽しんでください:)
「DevTools」プロジェクトを参照できます。
ActivityManagerを使用すると、ActivityManager.RunningAppProcessInfo、ActivityManager.RunningTaskInfoなどの多くの情報を取得できます。
しかし、結果が 'top'コマンドと同じになるかどうかはわかりません。
_/proc/stat
_を読み取って、ファイルの内容を解析できます。最初の行は次のようになります:
_cpu 79242 0 74306 842486413 756859 6140 67701 0
_
列の意味は、左から右に次のとおりです。
_ - 1st column : user = normal processes executing in user mode
- 2nd column : Nice = niced processes executing in user mode
- 3rd column : system = processes executing in kernel mode
- 4th column : idle = twiddling thumbs
- 5th column : iowait = waiting for I/O to complete
- 6th column : irq = servicing interrupts
- 7th column : softirq = servicing softirqs
_
平均アイドル率:X % = ( idle * 100 ) / ( user + Nice + system + idle + iowait + irq + softirq )
タイムデルタ間のアイドル状態の違いを計算し、CPU使用率を計算できます。