2010-03-18 167 views

回答

2

您可以參考「DevTools」項目。

使用ActivityManager你可以得到很多信息,如ActivityManager.RunningAppProcessInfo,ActivityManager.RunningTaskInfo,...

但我不知道結果會一樣的「頂」命令。

看到 ActivityManager

+7

沒有CPU使用率或時間信息可以發現那裏(或者我錯過了嗎?),只有內存使用等等。 – yuku 2010-03-22 02:49:59

+0

CPU使用率,你可以參考CPUGauge.cpp,我認爲沒有「公共API」這些你想要的信息。 或者你必須自己解析「/ proc/stat」。 – 2010-03-22 06:07:02

+0

供參考,這裏是CPUGauge的來源https://android.googlesource.com/platform/frameworks/native/+/a6938ba/libs/surfaceflinger/CPUGauge.cpp – 2016-12-20 20:40:41

25

有關完整的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; 
} 

有它的樂趣:)

相關問題