前言

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

中国版官网原文地址为: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

正文

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秒或更少.
  • 使用移动无线网络比预期的更频繁。

结语

本文最大限度保持原文的意思,由于笔者水平有限,若有翻译不准确或不妥当的地方,请指正,谢谢!

最新文章

  1. CODE[VS]4633Mz树链剖分练习
  2. winfrom 限制文本框小数点后两位
  3. 备份Oracle数据库的脚本
  4. HTML前端——CSS样式
  5. UVa 1349 (二分图最小权完美匹配) Optimal Bus Route Design
  6. Java Concurrency - Semaphore 信号量
  7. Linux 服务器如何修改 DNS
  8. iBeacon 开发笔记
  9. jQuery作用
  10. 百度Clouda的初步探索
  11. SQL Server 2008R2的安装
  12. Head First 设计模式 第2章 观察者模式
  13. JavaScript es2015经验基础总结
  14. 17 ContentProvider
  15. CentOS 6.X启动流程
  16. python_方法说明
  17. 用ImageJ快速分析和处理图像
  18. PAT 1037 在霍格沃茨找零钱
  19. RNN(2) ------ “《A Critical Review of Recurrent Neural Networks for Sequence Learning》RNN综述性论文讲解”(转载)
  20. How to export data from Thermo-Calc 如何从Thermo-calc导出文本数据

热门文章

  1. Jenkins踩坑系列--你试过linux主机ssh登录windows,启动java进程吗,来试试吧
  2. Java c# 跨语言Json反序列化首字母大小写问题
  3. ArcCore重构-头文件引用问题的初步解决
  4. Java多线程问题
  5. Java 面试知识点解析(三)——JVM篇
  6. js中给easyUI年份,月份选择下拉框赋值
  7. shell 常用命令语法简介
  8. Oracle-13:Oracle中的表分区
  9. scrapy顺序执行多个爬虫
  10. ESXI的安装和部署