You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11之后如何在安卓应用内获取CPU使用率?

Android 11+ 普通应用获取CPU使用率的可行方案

针对你提出的Android 11之后普通应用无法通过/proc/stat和HardwarePropertiesManager获取CPU使用率的问题,以下是几种可行的解决方案:

1. 计算自身应用的CPU使用率(基于Debug类)

普通应用可通过Debug类API计算自身进程/线程的CPU使用情况,无需特殊权限:

  • 调用Debug.threadCpuTimeNanos()获取当前线程的CPU占用时间(纳秒级)
  • 用System.currentTimeMillis()记录当前系统时间
  • 间隔固定时长(如1秒)后再次获取两个时间值,通过公式计算线程CPU使用率:
    // 核心逻辑示例
    long startTime = System.currentTimeMillis();
    long startCpuTime = Debug.threadCpuTimeNanos();
    
    Thread.sleep(1000);
    
    long endTime = System.currentTimeMillis();
    long endCpuTime = Debug.threadCpuTimeNanos();
    
    long elapsedTime = endTime - startTime;
    long cpuTimeUsed = (endCpuTime - startCpuTime) / 1000000; // 转换为毫秒
    double cpuUsage = (cpuTimeUsed * 100.0) / elapsedTime;
    
  • 若需获取整个应用的CPU使用率,可遍历进程内所有线程,累加各线程CPU时间后再按上述逻辑计算。

2. 使用StatsManager(Android 12及以上)

Android 12(API 31)引入的StatsManager允许普通应用收集系统与应用的性能统计数据,包含CPU使用率:

  • 申请android.permission.PACKAGE_USAGE_STATS权限,该权限需用户在系统设置的「权限管理-使用情况访问权限」中手动授予
  • 通过StatsManager注册StatsSubscription,指定要收集的CPU相关指标(如Metric.CPU_USAGE)
  • 订阅后可定期获取应用自身或全局的CPU使用率数据

3. 调试场景补充

若仅用于开发调试,可通过以下方式快速获取:

  • 使用Android Studio的Profiler工具,实时查看应用CPU使用率
  • 执行adb命令:adb shell top -n 1 -p <你的应用PID>,直接查看应用CPU占用情况

内容的提问来源于stack exchange,提问作者david

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:50:33