Answers:
Android会跟踪影响电池使用情况的事件,并将此信息存储在batterystats.bin文件中。一些例子:
Android根据制造商在设备上包含的配置信息,计算每个应用程序或组件(例如屏幕)使用的电量。
并非所有指标都经过衡量,因此统计信息有时可能会产生误导,但在每个Android平台版本中,情况都会变得更好。
可以使用以下方法从设备中转储电池统计信息:
adb shell dumpsys batterystats
这是Diane Hackborn帖子的有趣片段,其中包含有关唤醒锁功耗的更多详细信息:
有两种方法可以计算唤醒锁的功率。
在某些芯片组上,仅需保持唤醒锁即可防止CPU进入完整的深度睡眠。在报告的电池使用情况中,这笔额外的用电量将分配给所有持有唤醒锁的应用。
即使唤醒锁本身不会导致功耗,将唤醒锁保存在一个应用程序中也可以使其他应用程序运行,并在其他情况下不会占用CPU资源。(例如,某些应用程序可能有一个{sleep(1);做某事;}循环,如果没有唤醒锁,该循环将不会运行。)为解决此问题,应将应用程序的一半CPU使用率分配给用户那些拿着唤醒锁的人。