public static void recordCpuTopProcesses(ArrayList<ProcessCpuTracker.Stats> workingProcs){
if (workingProcs != null && workingProcs.size() >= 3) {
ProcessCpuTracker.Stats st1 = workingProcs.get(0);
ProcessCpuTracker.Stats st2 = workingProcs.get(1);
ProcessCpuTracker.Stats st3 = workingProcs.get(2);
Slog.d(TAG,"Top 3 process cpu load:"+st1.name+"="+getProcessTotalCpuLoad(st1)+","
+st2.name+"="+getProcessTotalCpuLoad(st2)+","
+st3.name+"="+getProcessTotalCpuLoad(st3));
}
}
private static float getProcessTotalCpuLoad(ProcessCpuTracker.Stats st){
int denominator = (int)st.rel_uptime;
if (denominator == 0 ) denominator = 1;
int numerator = st.rel_utime + st.rel_stime ;
long thousands = (numerator*1000)/denominator;
long hundreds = thousands/10;
if (hundreds < 10) {
long remainder = thousands - (hundreds*10);
if (remainder != 0) {
return (float)(hundreds+0.1*remainder);
}
}
return (float)hundreds;
}