android - 如何在一段时间内获取每个应用程序的 CPU 或电池使用情况

标签 android cpu-usage battery

有什么方法可以让我在一天之内查看每个应用程序使用了多少 CPU(或电池)?以下是 BatteryDoctor 应用程序的示例:

enter image description here

我认为他们以编程方式完成了一些工作,例如:

  • 获取应用的 CPU 时间
  • 获取应用的网络数据使用情况

据此,他们可以“计算”每个应用的电池使用情况(百分比)。

我知道有一些方法可以获得第二项工作(数据使用)。但是对于第一个,似乎真的很难得到。

我找到了一些方法,但它们似乎不起作用

无论如何,它只能返回应用正在使用的 CPU 的百分比。但我想要某个应用程序使用 CPU 一段时间的时间(例如示例中的 24 小时)。

那么有人知道如何以编程方式获取每个应用程序的 CPU 时间吗? 或者它可能只是应用程序的前台/运行时间?

最佳答案

这是您问题的答案,但我不确定这是否真的是您想要的。

如果 top 计算应用程序的 %CPU,我们称它为 %CPU_APP,在一个窗口上,比如说 500 毫秒,那么应用程序在该时间间隔内执行的总时间是 500 毫秒*%CPU_APP。如果您将所有此类时间间隔相加,比如 24 小时,那么您将获得该应用在该时间段内使用处理器的总时间。

例如,假设窗口为 500 毫秒,%CPU_APP 为 20%,则应用程序使用了 100 毫秒的时间。如果 %CPU_APP 在 24 小时内保持不变,则应用运行的总时间为 24hrs*60min/hr*60sec/min*.5*%CPU_APP。 (我把数学留给读者 ;-)> )

困难的部分是找到窗口的大小。如果任何文档中都没有给出,您可以通过观察绘图的颗粒度来衡量这一点。而且 %CPU_APP 不太可能保持不变,因此您必须收集这些统计数据并随着时间的推移进行整合。

如果这不是您想要的答案,请澄清您的问题并重新提交给 stack overflow。

关于android - 如何在一段时间内获取每个应用程序的 CPU 或电池使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33719086/

相关文章:

android - OpenGL ES 是否比标准 2D 图形耗电更多?

android - 关于文件上传列表和服务/Activity 的设计模式

java - 无法将 getString 用于 textView - android

c - 我正在编写一个程序来执行先来先服务算法,它显示段错误

java - 在 Linux 中使用 Java 运行 CPU 利用率命令

android - 在 Android Studio(华为 P20)中读取 "/sys/class/power_supply/Battery/current_now"的访问权限

ios - iPhone电池电量耗尽

android - 如何正确求和和分组,SQLite 中带有 where 子句的一组记录

java - Android:WebView 在中心加载图像/内容

windows - Explorer.exe CPU 使用率随非 Explorer 进程增加?