Battery Historian 工具可以深入了解随着时间的推移设备的电池消耗情况. 在系统范围级别, 该工具以 html 展示的方式视觉化了系统日志中与电源相关的事件. 在具体的应用级别, 该工具提供了多种数据, 这些数据可以帮您识别耗尽电池的应用行为.
本文档描述了一些方法, 通过这些方法您可以使用 Battery Historian 来学习电池消耗范例. 本文档以解释怎样阅读 Battery Historian 报告的系统范围内的数据开始. 然后, 展示了一些方法, 通过这些方法, 您可以使用 Battery Historian 来诊断和排除您自己的应用中与电池消耗相关的行为. 最后, 提供了一些对 Battery History 可能特别有用的场景的提示.
使用系统范围的视图
Battery Historian 工具提供了一种系统范围的可视化显示, 它包含了各种应用和系统的行为, 以及它们与随着时间推移电池消耗的关联. 正如图 1 中所显示的, 该视图可以帮您诊断和识别您应用的电源使用问题.
图 1:Battery Historian 关于系统范围内影响电源消耗事件的显示
图中令人尤为感兴趣的是这条黑色的, 水平的, 向下的代表电池等级的趋势线, 它是在 y 轴上测量的. 例如, 在 "Battery Level" 行的最开始, 大约上午 6:50 时, 可视化图在电池线上显示了一个相对陡峭的下降.
图 2 提供了显示图中那部分的特写镜头.
图 2: 从大约 6:50 AM 到 7:20 AM 之间 Battery Historian 时间线的特写镜头
当电量急剧下降时, 在电池等级线的最开始展示图显示了正在发生的三件事: CPU 正在运行, 应用获得了一个唤醒锁, 以及屏幕亮了. 在这种方式中, Battery Historian 帮您了解到当电池消耗很高时发生了什么事件. 然后, 您可以瞄准您应用中的这些行为以及研究是否您可以进行一些相关的优化.
这个系统范围的可视化图也可以提供其它的线索. 例如, 如果它显示移动无线网频繁地关闭和开启, 那么通过如 JobScheduler 或者 Firebase Job Dispatcher 等 [智能调度 API] 可能有机会优化这些行为.
下一个部分解释了怎样针对您自己的应用研究行为和事件.
查看具体应用的数据
除了通过系统范围视图提供的宏观水平数据, Battery Historian 也提供了表格和一些数据的可视化图, 该可视化视图特别针对您设备上运行的每一个应用. 这些表格化的数据包括:
设备上应用的估计电源使用.
网络信息.
唤醒锁.
服务.
进程信息.
表格提供了关于您的应用的两个维度的数据. 首先, 你可以查找与其它应用相比, 您的应用的电源使用排名在哪里. 为了做这件事, 在 "Tables" 下点击 "Device Power Estimates" 表格. 这个表格检查了一个虚构的叫做 "Pug Power" 的应用.
图 3: 调查那些应用消耗了最多的电量.
图 3 中的表格揭示了 "Pug Power" 是设备上电量的第九大消费者, 也是第三大非操作系统部分的应用. 这个数据显示该应用应该进行更深入的研究.
为了查找指定应用的数据, 输入它的包名到 "App Selection" 下方的两列下拉菜单的下层, 它们位于可视化图的左边.
图 4: 输入想查看数据的指定应用
当您选择了一个指定的应用, 如下的数据是可视化类型就变为显示指定应用的数据, 而不是系统范围的数据:
SyncManager.
- Foreground process
- Userspace Wakelock
- Top App
- JobScheduler
- Activity Manager Proc
如果您的应用执行同步和执行作业比需要的更频繁,"SyncManager" 和 "JobScheduler" 可视化视图会立即使其变得很明显. 通过这样做, 它们可以快速地显示机会来为提升电池性能优化您应用的行为.
您也可以获得再多一块指定应用的可视化数据 --"Userspace Wakelock". 为了在 bug 报告中包含这个信息, 在您的终端窗口中输入如下命令:
$ adb shell dumpsys batterystats --enable full-wake-history
★ 注意: 从 Android6.0(API 等级 23) 开始, 平台包含了 Doze 功能, 给应用实行了某些优化. 例如, 无论 JobScheduler 如何调度作业, Doze 批量处理工作都会在短暂的维护窗口中进行.
图 5 和图 6 显示了 "Pug Power" 数据: 图 5 显示了指定应用数据的可视化视图, 图 6 显示了相应的表格数据.
图 5: 虚构应用 "Pug Power" 数据的可视化视图
图 6: 虚构应用 "Pug Power" 的表格化数据
可视化视图不会立即显示明显的内容. JobScheduler 行显示应用没有任何工作调度. SyncManager 行显示应用没有执行任何同步.
可是, 表格数据中 Wakelocks 部分的检测显示 Pug Power 获取 wakelocks(唤醒锁) 总共超过了一个小时. 这个不寻常且代价高的行为可能要为应用电量消耗的高水平负责. 这一信息帮助开发者瞄准那些可能给优化带来巨大帮助的区域. 在这种情况下, 为什么应用获取这么多唤醒锁时间, 以及开发者如何改善这种行为?
其它 Battery Historian 可能有帮助的情况
有很多其它情形, Battery Historian 能帮您诊断机会来改善电池行为. 例如, Battery Historian 能告诉您是否您的应用正在:
过于频繁地触发唤醒警报 (每 10 秒钟或更少)
持续持有 GPS 锁.
调度工作每 30 秒或更少.
调度同步每 30 秒或更少.
使用移动无线网络比预期的更频繁.
来源: https://www.cnblogs.com/andy-songwei/p/10727437.html