static public void insert(Context context) {
ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List list = am.getRunningAppProcesses();
long now = new Date().getTime();
for (RunningAppProcessInfo info : list) {
long tick = getTick(info.pid);
String name = info.processName;
TProcess p = new TProcess(info.pkgList[0], name, tick, 0, now);
p.insert(context);
}
long tick = getTick();
TKernel k = new TKernel(tick, 0, now);
k.insert(context);
}
上記は、CPU利用率ビューアーのソースの一部である。上記を定期的に呼び出して、CPU使用率を計算するために使う情報を現在時刻とセットで保存している(TProcess#insert/TKernel#insert)。パッケージ名を使用してアイコン等の情報を取得できるため、CPU利用率ビューアーでは保存している。 なお、上記ソースでは、現在時刻として保存した時刻と/proc/[pid]/stat, /proc/statにアクセスした時間にわずかだが差があり、情報として正確ではない。
IT系リサーチャー。最近はブロックチェーン関連に従事。 2019年の再開後は、技術系の話を書こうかね。 2014年以前は、競馬予想ソフト、絵本とAndroid Marketに公開したアプリの話がメインの日常をつづったブログだった。
2011年8月29日月曜日
CPU使用率の計算方法3 (プロセスID取得)
CPU使用率の計算方法2で書いたように、CPU使用率を計算するためには/proc/[pid]/statにアクセスする。したがって、[pid]が必要である。実行中のプロセスの情報はActivityManagerを使ってアクセスできる。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿