【官网翻译】性能篇(四)为电池寿命作优化——使用Battery Historian分析电源使用状况

前言android

       本文翻译自“为电池寿命作优化”系列文档中的其中一篇,用于介绍如何使用Battery Historian分析电源使用状况。shell

       中国版官网原文地址为:https://developer.android.google.cn/topic/performance/power/battery-historian性能优化

       路径为:Android Developers > Docs > 指南 > Best practies > Performance > Optimize for battery life > Analyze power use with Battery Historian网络

 

正文app

       Battery Historian工具能够深刻了解随着时间的推移设备的电池消耗状况。在系统范围级别,该工具以HTML展现的方式视觉化了系统日志中与电源相关的事件。在具体的应用级别,该工具提供了多种数据,这些数据能够帮您识别耗尽电池的应用行为。ide

       本文档描述了一些方法,经过这些方法您能够使用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秒或更少.
  • 使用移动无线网络比预期的更频繁。

 

结语

       本文最大限度保持原文的意思,因为笔者水平有限,如有翻译不许确或不稳当的地方,请指正,谢谢!

相关文章
相关标签/搜索