users mexico consultas android cpu-usage processor performance-monitor

mexico - ¿Cómo obtener estadísticas de uso de la CPU en Android?



android versions popularity (2)

Puede hacer referencia al proyecto "DevTools".

Usando ActivityManager puede obtener mucha información, como ActivityManager.RunningAppProcessInfo, ActivityManager.RunningTaskInfo, ...

Pero no estoy seguro de que el resultado sea igual que el comando ''top''.

ver ActivityManager

Quiero obtener el uso general de la CPU en Android, similar a lo que hace el Administrador de tareas de Windows. Puedo analizar la salida del programa top incluido en Android, pero si hay una llamada a la API que haga lo mismo, sería mejor.

Cualquier punteros?


ATENCIÓN : esta respuesta es antigua y NO funciona en las versiones más recientes de Android debido a mecanismos de seguridad mejorados.

Para el uso completo de la CPU (no para cada proceso) puede usar:

/** * * @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; }

Diviértete con eso :)