V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kldd529
V2EX  ›  Android

Android 有这样的工具吗

  •  
  •   kldd529 · 2023-03-14 14:45:37 +08:00 · 8806 次点击
    这是一个创建于 649 天前的主题,其中的信息可能已经有所发展或是发生改变。
    实时可以查看各个应用的 CPU 占用
    类似 adb shell top 指令的功能
    2 条回复    2023-03-14 15:41:51 +08:00
    fairytale110
        1
    fairytale110  
       2023-03-14 15:30:52 +08:00 via Android
    您可以使用 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
        2
    Edwinc  
       2023-03-14 15:41:51 +08:00
    scene 可以 我一般用它挂载 uperf 给手机降频
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2436 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 15:49 · PVG 23:49 · LAX 07:49 · JFK 10:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.