2010-03-18 1 views

답변

2

"DevTools"프로젝트를 참조 할 수 있습니다.

당신이 그런 ActivityManager.RunningAppProcessInfo, ActivityManager.RunningTaskInfo, 등 많은 정보를 얻을 수 있습니다 ActivityManager 사용

...

하지만 확실하지 않다 결과 것 같은 '최고'명령과.

은 당신이 사용할 수있는 (안 각 프로세스에 대해) 전체 CPU 사용에 대한 ActivityManager

+7

CPU 사용 또는 시간 정보를 찾을 수 없음 거기 (또는 나는 그것을 놓쳤는가?), 다른 것의 사이에서서만 기억 사용법. CPU 사용량이 – yuku

+0

인 경우 CPUGauge.cpp를 참조 할 수 있습니다. 원하는 정보의 "공개 API"가없는 것 같습니다. 또는 "/ proc/stat"를 직접 구문 분석해야합니다. –

+0

참고로 다음은 CPUGauge 소스입니다 https://android.googlesource.com/platform/frameworks/native/+/a6938ba/libs/surfaceflinger/CPUGauge.cpp –

25

를 참조하십시오

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

그것으로 재미 유무 :