Android 有这样的工具吗

2023-03-14 14:45:37 +08:00
 kldd529
实时可以查看各个应用的 CPU 占用
类似 adb shell top 指令的功能
4208 次点击
所在节点    Android
2 条回复
fairytale110
2023-03-14 15:30:52 +08:00
您可以使用 Android 提供的实时监控工具——`android.os.Debug`来查看各个应用的 CPU 占用情况。具体操作步骤如下:

1. 在需要监控 CPU 的地方,添加以下代码:

```java
Debug.startMethodTracing();
```

该方法会开始记录当前应用程序的 CPU 运行状况。

2. 添加以下代码,获取系统中所有正在运行的进程,并输出每个进程的 CPU 占用率:

```java
ActivityManager activityManager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();

for(ActivityManager.RunningAppProcessInfo runningAppProcess : runningAppProcesses){
int pid = runningAppProcess.pid;
int uid = runningAppProcess.uid;
String processName = runningAppProcess.processName;

Debug.MemoryInfo[] memoryInfos = activityManager.getProcessMemoryInfo(new int[]{pid});
float cpuRate = 0.0f;
if(memoryInfos != null && memoryInfos.length > 0){
long cpuTime1 = Debug.threadCpuTimeNanos();
long upTime1 = SystemClock.elapsedRealtimeNanos();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
long cpuTime2 = Debug.threadCpuTimeNanos();
long upTime2 = SystemClock.elapsedRealtimeNanos();
long usedCpu = cpuTime2 - cpuTime1;
long usedTime = upTime2 - upTime1;
cpuRate = (float)(usedCpu / usedTime / 1000000L);
}

Log.d(TAG, "processName=" + processName + ", pid=" + pid + ", uid=" + uid + ", cpuRate=" + cpuRate + "%");
}
```

3. 在不需要监控 CPU 的地方,添加以下代码:

```java
Debug.stopMethodTracing();
```

该方法会停止记录当前应用程序的 CPU 运行状况。

这样就可以通过 Java 代码实时查看各个应用的 CPU 占用了。
Edwinc
2023-03-14 15:41:51 +08:00
scene 可以 我一般用它挂载 uperf 给手机降频

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/923900

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX