Erhalte Speicherverbrauch in Android
Gibt es eine API, durch die wir bekommen können CPU-oder Speichernutzung von android?
Habe ich versucht einen code wie folgt:
package com.infostretch.mainactivity;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class CPULoad
{
long total = 0;
long idle = 0;
float usage = 0;
public CPULoad()
{
readUsage();
}
public float getUsage()
{
readUsage();
return usage;
}
private void readUsage()
{
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/stat")), 1000);
String load = reader.readLine();
reader.close();
String[] toks = load.split(" ");
long currTotal = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4]);
long currIdle = Long.parseLong(toks[5]);
this.usage = (currTotal - total) * 100.0f / (currTotal - total + currIdle - idle);
this.total = currTotal;
this.idle = currIdle;
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
}
Ist das der richtige Weg, es zu tun?
InformationsquelleAutor der Frage Badal | 2010-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verwende diese Funktion zur Berechnung der cpu-Auslastung. Hoffe es kann dir helfen.
InformationsquelleAutor der Antwort szcoder
Einen einfachen Weg, um zu überprüfen, die CPU-Auslastung, verwenden Sie das adb-tool w/top. I. e.:
adb shell top -m 10
InformationsquelleAutor der Antwort rcl
Basierend auf den vorherigen Antworten und persönliche Erfahrungen, hier ist der code, den ich verwenden, um die überwachung der CPU-Nutzung. Der code dieser Klasse wird in Java geschrieben.
Gibt es mehrere Möglichkeiten, die Nutzung dieser Klasse. Sie können den Anruf entweder
syncGetSystemCpuUsage
odersyncGetProcessCpuUsage
aber jeder blockiert den aufrufenden thread. Da ein häufiges Problem ist die überwachung des Gesamt-CPU-Auslastung und die CPU-Verwendung des aktuellen Prozesses zur gleichen Zeit, ich haben eine Klasse-computing-beide von Ihnen. Diese Klasse enthält einen speziellen thread. Die output-management ist die Umsetzung spezifischer, und Sie müssen code Ihre eigenen sind.Die Klasse kann angepasst werden, indem ein paar bedeutet. Die ständige
CPU_WINDOW
definiert die Tiefe Lesen, d.h. die Anzahl von Millisekunden zwischen zwei Messungen und Berechnung der entsprechenden CPU-Last.CPU_REFRESH_RATE
ist die Zeit zwischen den einzelnen CPU-Last Messung. Setzen Sie nichtCPU_REFRESH_RATE
auf 0, weil es die Aussetzung der thread nach dem ersten Lesen.InformationsquelleAutor der Antwort slash33
Seit der OP fragte nach CPU-Auslastung UND Speicher-Auslastung (angenommen Antwort zeigt nur Strategie sein, um die cpu-Auslastung), möchte ich empfehlen, die Klasse ActivityManager und speziell die akzeptierte Antwort von dieser Frage: Wie man aktuelle Speichernutzung in android?
InformationsquelleAutor der Antwort robguinness
Überprüfen Sie die
Debug
Klasse. http://developer.android.com/reference/android/os/Debug.htmlalso
Debug.getNativeHeapAllocatedSize()
Es hat Methoden, um die verwendeten nativen heap, das wird also verwendet, die durch externe bitmaps in Ihre app.
Für den Haufen, der die app nutzt intern können Sie sehen, dass in der DDMS-tool des Android SDK und ist auch über Eclipse.
Den nativen heap + dem heap, wie in der DDMS-make-up der Gesamt-heap, Ihre app ist die Zuteilung.
CPU-Auslastung bin ich mir nicht sicher, ob es etwas gibt über die API/SDK.
InformationsquelleAutor der Antwort Mathias Conradt
geben Sie das android-terminal und Tippen Sie folgende Befehle ein :dumpsys cpuinfo
InformationsquelleAutor der Antwort wangxigui