手机电量消耗分析工具 Battery Historian 指南

news2024/11/13 9:25:11
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

本篇文章主要介绍 Android 开发中 电量 的部分知识点,通过阅读本篇文章,您将收获以下内容:

一、安装Battery Historian
二、收集Batterystats 数据
三、使用Battery Historian分析数据
四、Batterystats 额外数据
五、使用Battery Historian 分析电量消耗
六、Battery Historian能干什么

本文主要分析了Batterystats工具和Battery Historian脚本的基本用法和工作流程。

Batterystats是一个包含在Android框架中的工具,用于收集设备上的电池数据。您可以使用adb将收集的电池数据转储到您的开发机器上,并创建一个报告,您可以使用Battery Historian进行分析。Battery Historian将来自Batterystats的报告转换为可在浏览器中查看的HTML可视化文件。

它有什么好处:

向您显示过程在何处以及如何从电池中吸取电流。
识别您的应用程序中可延期或甚至删除的任务以延长电池寿命。

一、安装Battery Historian

安装Battery Historian的最简单方法是使用Docker。有关备用安装方法(包括从源代码构建)。要使用Docker进行安装,请执行以下操作:

  • 1.按照Docker网站上的说明安装Docker Community Edition。

  • 2.要确认Docker已正确安装,请打开命令行并输入以下命令:
    docker run hello-world

ba476fe8718be5770fce7923cd971973.jpeg

Docker 成功安装信息

  • 3.使用以下命令运行Battery Historian图像:

docker --run -p port_number:9999 gcr.io/android-battery-historian:2.1 --port 9999

  • 4.在浏览器中导航到Battery Historian以确认它正在运行。地址因操作系统而异:

Linux and Mac
http://localhost/port_number
For Windows
http://123.456.78.90:port_number
您将看到Battery Historian起始页面,您可以在其中上载和查看电池统计信息。

2ca63cf1961c14108ee52a6af2d5f6af.jpeg

Battery Historian 首页

二、收集Batterystats 数据

连接手机,打开开发者模式,连接adb。

  • 1.重置 batterystats 数据

adb shell dumpsys batterystats --reset

设备始终在后台收集batterystats和其他调试信息。重置会清除旧电池采集数据.

  • 2.断开设备与电脑的连接,以便只从设备的电池中消耗电流。

  • 3.玩你的应用程序,并执行你想要的数据的行为; 例如,断开与WiFi的连接并将数据发送到云端。

  • 4.重新连接手机dump数据

adb shell dumpsys batterystats > [path/]batterystats.txt

  • 5.导出原始bugreport数据

Android 7.0 以上
adb bugreport > [path/]bugreport.zip

Android 5.0/ 6.0
adb bugreport > [path/]bugreport.txt

  • 6.打开并提交分析数据
    Battery Historian分析网站 需翻墙

三、使用Battery Historian分析数据

成功提交后,数据分析如下

eee9c1e6eb8b89c488894539c46114ea.jpeg

Battery Historian

  • 1.从下拉列表中添加其他指标。

  • 2.将鼠标悬停在信息图标上可查看有关每个指标的更多信息,包括图表中使用的颜色的关键字。

  • 3.将鼠标悬停在栏上,即可查看有关该指标的详细信息以及时间线上特定点的电池状态。

四、Batterystats 额外数据

Battery Historian图表下面的stats部分可以查看batterystats.txt文件中的其他信息。

40f05b6ec8bf7880c45dd1c57229d96e.jpeg

Batterystats 额外数据

  1. System Stats选项卡包含系统范围的统计信息,如单元信号级别和屏幕亮度。这些信息提供了设备发生情况的整体情况。这对确保没有外部事件影响您的测试特别有用。

  2. App Stats选项卡包含有关特定应用程序的信息。使用左侧的应用程序选择窗格中(图3)排序应用程序下拉列表对应用程序列表进行排序。您可以选择一个特定的应用程序来查看使用下面(图4)个应用程序下拉列表的统计信息。

五、使用 Battery Historian 分析电量消耗

Battery Historian工具提供了一段时间内设备电池消耗的深入分析。在全系统级别,该工具以HTML表示形式从系统日志中查看与电源相关的事件。在特定应用程序级别,该工具提供了各种数据,可帮助您确定电池耗尽应用程序的行为。

本文档介绍了使用Battery Historian了解电池消耗模式的一些方法。该文件首先解释如何读取Battery Historian报告的系统范围数据。然后,介绍如何使用Battery Historian诊断和解决与电池消耗有关的应用行为。最后,它提供了有关Battery Historian可能特别有用的场景的几个提示。

Battery Historian工具提供了各种应用程序和系统行为的系统范围可视化,以及随着时间的推移与电池消耗的相关性

5b9ac92398523e042ff591c3bc916a2d.jpeg

Battery Historian 事例

此图特别感兴趣的是在y轴上测量的代表电池电量的黑色水平下降趋势线。例如,在电池水平线的最开始时间点,大约早上6点50分,可视化显示电池电量水平相对急剧下降。

324275b0e978b50bc61d07834860e219.jpeg

CPU 唤醒锁等信息

在电池电量线开始时,随着电池电量急剧下降,显示屏显示出三件事:CPU正在运行,应用程序已获取唤醒锁,屏幕亮起。通过这种方式,Battery Historian可帮助您了解电池消耗高时发生的事件。然后,您可以将这些行为定位到您的应用中,并调查是否可以进行相关的优化。

除了系统范围内提供的宏观数据外,Battery Historian还提供特定于设备上运行的每个应用程序的表格和一些可视化数据。表格数据包括:

  • 该应用在设备上的预计用电量。

  • 网络信息。

  • Wakelocks。

  • 服务。

  • 进程信息。

这些表格提供了有关您的应用的两个维度数据。首先,您可以查看您的应用的用电量排名与其他应用的相比。为此,请单击表下的设备功率估算表。这个例子考察了一个名为Pug Power的虚构应用程序。

6bc02c0bcb68886772a2e5d3c33ff4be.jpeg

调查哪些应用程序消耗的功率最大

上图的表格显示,Pug Power是该设备上第九大电池供电用户,也是不属于操作系统的第三大应用。这个数据表明,这个应用程序承担更深入的调查。

要查找特定应用程序的数据,请将其包名称输入位于可视化左侧下方应用程序选择下的两个下拉菜单中的较低位置

4d0c7e6e693331059c358fb3fb70d731.jpeg

当您选择特定的应用程序时,以下数据可视化类别将更改为显示应用程序特定的数据而不是系统范围的数据:

  • SyncManager.

  • Foreground process.

  • Userspace Wakelock.

  • Top app.

  • JobScheduler.

  • Activity Manager Proc.

如果您的应用程序执行同步并执行作业的次数超过必要,SyncManager和JobScheduler可视化立即显而易见。在此过程中,他们可以快速发现优化应用行为以改善电池性能的机会。

您还可以获得更多的特定于应用程序的可视化数据,用户空间Wakelock。要将此信息包含在错误报告中,请在终端窗口中输入以下命令:
adb shell dumpsys batterystats --enable full-wake-history

ps:从Android 6.0(API级别23)开始,该平台包含Doze功能,这对应用程序实施了某些优化。例如,无论JobScheduler如何安排他们,Doze都会在短期维护时段内批处理作业。

ec4daf88cb8e1429b2da0e3c8f61b708.jpeg

显示特定应用的可视化数据

7dbe7e989d1501c48150b42dea87e5e1.jpeg

应用数据表格

看看可视化并不立即显示任何东西。JobScheduler行显示该应用程序没有计划任务。SyncManager行显示应用程序未执行任何同步。

然而,对表格数据的Wakelocks部分的检查表明,帕格电力总共花费了一个多小时的时间。这种不寻常的和昂贵的行为可以解释应用程序的高功耗水平。这一信息有助于开发人员瞄准优化可能极大帮助的领域。在这种情况下,为什么应用程序会获得如此多的唤醒时间,开发人员如何改善这种行为?

六、Battery Historian能干什么

Battery Historian还可以帮助您诊断改善电池行为的机会。例如,Battery Historian可以告诉你你的应用程序是否:

  • 过度频繁地发出唤醒警报(每10秒钟或更少)。

  • 持续持有GPS锁。

  • 每30秒或更短时间安排一次作业。

  • 计划每30秒或更短时间同步一次。

  • 更频繁地使用蜂窝无线电比您期望的更频繁。

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

16ba1407dc3714e3076b7f675b5bb954.jpeg

点个在看,方便您使用时快速查找!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLO好像也没那么难?

“学YOLO的念头是想整个游戏外挂!” 目录 基本原理 模型推理 IOU交并比 NMS非极大值抑制 模型训练 损失函数LOSS 代码实现 YOLO学习渠道 基本原理 模型推理 学习一个新的神经网络结构,作者认为整明白输入和输出是怎么回事就OK了,至于…

平安城市/雪亮工程现状及需求分析:EasyCVR视频汇聚平台助力雪亮工程项目建设

一、背景现状 经过近几年的努力,平安城市雪亮工程建设取得了显著的成绩,完成了前端高清视频点位和高清卡口系统建设,建成了(视频监控类)、(卡口类)和(应用类)的平台。这…

Linux笔记 --- 目录检索

基本概念 Linux中的目录与windows的文件夹相似但是概念大相径庭,windows中子文件一定不会比母文件夹大,但在Linux目录中是可以实现的,目录是一种文件索引表,下图是分区和目录的关系 Linux中目录是一组由文件名和索引号组成的索引表…

JavaScript基础(33)_鼠标滚轮滚动事件、键盘事件

鼠标滚轮滚动事件:onwheel 获取鼠标滚轮滚动的方向:wheelDelta 比如:向上滚动:109 (所有正值都是向上) 向下滚动:-109(所有负值都是向下) 注意:当…

技术分享:从崩溃边缘到问题解决 —— SSL证书兼容性问题的实战经历

引言 作为一名开发者,我们经常会遇到一些令人头疼的技术难题。有时候,这些问题看似简单却异常棘手,让人几乎要放弃。今天,我想分享一次特别的经历,它始于一系列的调试失败,最终却在不经意间找到了解决方案…

单片机几种通信协议(2)

SPI通信 相比于IIC协议,SPI通信速度更快,设计更为简单,功能并没有IIC那么多,学习起来比IIC简单许多 两条通信线,MISO,MOSI,全双工通信 理解SPI通信的核心

ISP代理与双ISP代理的区别

在网络营销、数据采集及隐私保护等领域,代理服务器扮演着至关重要的角色。而在代理服务器的选择中,ISP代理与双ISP代理是两种常见的选择。本文将对这两种代理服务进行详细分析,探讨它们之间的区别以及各自的优势和适用场景。 一、ISP代理概述…

经典算法题总结:二叉树篇

二叉树解题的思维模式分两类: 是否可以通过遍历一遍二叉树得到答案?如果可以,用一个 traverse 函数配合外部变量来实现,这叫「遍历」的思维模式。是否可以定义一个递归函数,通过子问题(子树)的…

排序篇--插入排序及希尔排序

前言 此次的排序均按照升序为例 排序大家都不陌生,生活中处处有排序。什么排名,评分,分数等。这其中最简单的应该就是冒泡排序了,在这里就不多说了。 提示:以下是本篇文章正文内容,下面案例可供参考 一、排…

构造方法,JavaBean,对象内存图,基础数据类型和引用数据类型

构造器,构造函数 在创建对象的时候给成员变量进行赋值 修饰符 类名(参数){ 方法体; } 如果我们没有写任何的构造方法,虚拟机会帮我们加一个空参构造方法 可以手动建一个空参,看是否调用成功。 如果我们…

负载均衡详细概念介绍之(四层和七层实现)

目录 一、负载均衡介绍 1.1什么是负载均衡 ​编辑 1.2 为什么要用负载均衡 二、负载均衡的类型 2.1 通过一些硬件实现 2.2 四层负载均衡 2.3 七层负载均衡 三、四层和七层的区别 及特点 一、负载均衡介绍 1.1什么是负载均衡 负载均衡:Load Balance,简称LB&a…

slowfast

核心网络网络架构: 1、分别获取高频和低频图像数据 2、分别进行特征提取 3、特征融合 4、预测 网络结构细节:

网站如何被Google收录?

想让你的网站快速被Google收录?试试GSI快速收录服务吧,这是通过谷歌爬虫池系统来实现的。这套系统吸引并圈养Google爬虫,提高你网站的抓取频率。每天有大量Google爬虫抓取你的网站页面,大大提高了页面的收录概率,从而增…

SpringBoot的使用的注解以及监控监控和lombok使用

目录 修改SpringBoot项目中依赖的版本号 为什么默认是8.0.23版本 修改方法 第一种 :直接在pom.xml中引入相关依赖时直接指定版本号 第二种:在pom.xml中的属性中进行修改 SpringBoot自动化配置web项目 Configuration注解 Import注解 1.导入Bean 2…

C++_进阶:C++11新增语法(2)

文章目录 1.新的类功能1.1 新的默认成员函数2. 类成员变量初始化3. 强制生成默认函数的关键字default4. 禁止生成默认函数的关键字delete:5. final与override关键字 2. 可变参数模板3. lambda表达式3.1 一个使用场景3.2 lambda表达式语法**3.3 lambda捕捉列表详细说明**3.4 **底…

一款好用的研发项目管理软件能为公司带来什么?

一款高效的研发项目管理软件可以为公司带来竞争优势,将项目交付时间缩短45%,提高项目成功率至72%,提高研发效率,缩短上市周期。该软件含有丰富的数据分析功能,可以更好地掌握项目进度,发现和解决问题&#…

Unity教程(十)Tile Palette搭建平台关卡

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

仕考网:考外省公务员可以调回本地吗?

一般情况下,公务员岗位是固定不可随意更换的,因为每个职位都对应特定的职责和要求。一旦考到外地的岗位,想要调回本地几乎是不可能的。因为这样的操作可能导致职位空缺,进而需要通过公共招聘流程来填补,而不是简单地从…

场外期权交易:找到适合你的那一款

各位期权爱好者们!今天咱们来聊聊在进行场外期权交易时,怎么去评估和选择适合自己风险承受能力的期权产品。 第一,你得对自己有个清楚的认识。想想看,你是那种激进型的冒险家,还是保守型的稳健派呢?了解自己…

PostgreSQL数据库内核(三):缓冲区管理器

文章目录 共享缓冲区基础知识逻辑读和物理读LRU算法和CLOCK时钟算法 共享缓冲区管理器结构共享缓冲表层共享缓冲区描述符层共享缓冲页层 共享缓冲区管理器工作流程初始化缓冲区读缓冲区淘汰策略共享缓冲区锁 共享缓冲区基础知识 通常数据库系统都会在内存中预留buffer缓冲空间…