Android如何测量每个流程所消耗的能量?
#1 楼
Android会跟踪影响电池使用情况的事件,并将此信息存储在batterystats.bin文件中。一些示例:时间长度屏幕处于特定的亮度设置下
哪个应用程序(或非Android应用程序进程)以及保持唤醒锁的时间(防止设备从睡眠)
每个进程(Android应用程序或其他进程)的CPU使用率
电话信号强度
GPS使用率
等。
Android计算每个进程的功率应用程序或组件(例如屏幕)的使用基于制造商在设备上包含的配置信息。
并非所有内容都经过测量,因此统计信息有时可能会令人误解,但是在每个Android Platform版本中,情况都会变得更好。
可以使用以下方法从设备中转储电池电量统计信息:
adb shell dumpsys batterystats
这是Diane Hackborn的有趣帖子片段,其中包含有关唤醒的更多详细信息锁功耗:
有两种方法可以计算唤醒锁的功耗。
在某些芯片组上,只需持有唤醒锁即可防止CPU进入深度睡眠状态。在报告的电池使用情况中,
这笔额外的用电量将分布在所有具有唤醒锁的应用程序中。
即使唤醒锁本身不引起用电,也要在其中保持唤醒锁一个应用程序可以允许其他应用程序在其他情况下无法运行并运行CPU。 (例如,某些应用可能有一个{sleep(1);
做某事;}循环,如果没有唤醒锁,该循环将无法运行。)要解决这个问题,需要使用一半的CPU使用率的应用程序分发给
归咎于持有唤醒锁的应用程序。
评论
您能否提供证明您答案的资料/参考?
– Diimdeep
2012年10月10日下午5:19
所有信息均来自熟悉此区域的Google开发人员提供的指向google +线程的链接。
–PawełNadolski
2012-03-10 13:26
新设备的正确命令(不确定使用哪个API)应该是:adb shell dumpsys batterystats,或者(如果需要,请在文件中):adb shell dumpsys batterystats> batterystats.txt
– Android开发人员
2014年8月29日14:37
评论
我猜想在1秒内执行了多少指令。@Algo:假设使用大量CPU的后台应用程序比使用少量CPU但使用大量Wifi和GPS和显示器的其他应用程序更耗电池,这完全是一种误导。
如果是这样,那么您可以从应用程序获得的权限数量中获得提示。..只是一个想法。
@LieRyan的电池统计信息,不是将wifi,gps,蓝牙等计算为自己的“消费者”电池吗?