当前位置: 首页 > news >正文

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

阅读五分钟,每日十点,和您一起终身学习,这里是程序员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

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

相关文章:

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

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中 电量 的部分知识点,通过阅读本篇文章,您将收获以下内容: 一、安装Battery Historian二、收集Batterystats 数据三、使用B…...

笔试练习day4

目录 WY22 Fibonacci数列题目解析解法暴力解法贪心代码 NC242 单词搜索题目解析例子1解析例子2解析例子3解析解法深度优先遍历dfs实现最终代码 BC140 杨辉三角解法线性dp问题代码 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒&am…...

公主少爷都爱看的haproxy七层代理详细介绍及常见实验详解

目录 一、负载均衡 1.1什么是负载均衡 1.2为什么要实验负载均衡 1.3四层负载均衡 1.4七层负载均衡 1.5四层负载均衡和七层负载均衡的对比 二、什么是haproxy 2.1定义 2. 2功能和特点 2.3应用场景 2.4haproxy的分类 三、安装及基本配置的信息 3.1软件的安装 3.2ha…...

Android笔试面试题AI答之Kotlin(6)

文章目录 24. 以下代码执行的结果是什么&#xff1f;25. 解释一下下述Kotlin 代码有什么问题&#xff1f;26. 如何在 Kotlin 中创建常量&#xff1f;示例注意事项总结 27. Koltin 可以互换使用 IntArray 和 Kotlin 中的 Array 吗&#xff1f;IntArrayArray<Int>互换使用从…...

“tcp控制协议”的理解

情景解释&#xff1a; 1.过程&#xff1a; 在用户进行网络间通信时&#xff0c;不管是客户端还是服务端&#xff0c;都会有两个缓冲区——发送缓冲区和接受缓冲区。 通过4个缓冲区进行数据交流。 用户通过write()将数据发送到他的发送缓冲区中&#xff0c;再传输到服务端的…...

考试成绩查询系统,发成绩不再愁

在考试季落幕后&#xff0c;家长们总是怀着紧张的心情&#xff0c;期待着孩子们的成绩单。传统上&#xff0c;老师们需要手动发送成绩单给每位家长&#xff0c;这个过程不仅耗时耗力&#xff0c;而且容易出错&#xff0c;给老师们带来了不小的压力。 随着科技的进步&#xff0c…...

【扒代码】图像数据 Transformer

def forward(self, x, bboxes):# 确定对象的数量&#xff0c;如果不是零样本学习场景&#xff0c;则根据bboxes的数量确定num_objects bboxes.size(1) if not self.zero_shot else self.num_objects# backbone# 通过主干网络提取特征backbone_features self.backbone(x)# pre…...

光伏仿真系统的使用流程

为了更有效地规划设计并评估光伏电站的性能与经济性&#xff0c;光伏仿真系统应运而生。该系统通过模拟实际运行场景&#xff0c;为项目开发者提供全面的数据支持和决策依据。 1、气象数据分析 气象数据是光伏系统性能评估的基础。此阶段&#xff0c;仿真系统需收集并处理项目…...

【Dash】使用 dash_mantine_components 创建图表

一、Styling Your App The examples in the previous section used Dash HTML Components to build a simple app layout, but you can style your app to look more professional. This section will give a brief overview of the multiple tools that you can use to enhan…...

Unity 输入模块 之 初识新输入系统(其实也不新)

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​ 1.介绍 当年的宣传网页Unity新一代输入系统介绍 - 技术专栏 - Unity官方开发者社区 老输入系统每次配置新项目都需要写…...

springboot+redis集群实现集群拓扑动态刷新温故

springboot项目&#xff0c;并集成redis集群&#xff0c;当redis集群节点宕掉后又恢复了&#xff0c;但springboot调用redis集群服务报错&#xff0c;下面对springboot集成redis集群实现集群拓扑动态刷新进行温习和巩固。 原因分析&#xff1a; 使用lettuce连接redis集群实例&a…...

LoadRunner常用函数介绍

内置函数和Jmeter差不多&#xff0c;Jmeter更火&#xff0c;更好百度&#xff0c;毕竟开源&#xff0c;用的人多&#xff0c;所以有些函数如果不太懂用法&#xff0c;可以百度Jmeter作为参考来使用LR。 脚本中常用函数 事务组 lr_start_transaction("KaiShi"); //…...

通讯录管理系统

目录 一. 实验目的 二. 系统设计 三. 系统设计流程&#xff1a; 四. 实验结果及效果展示 五. 实验总结 六. 附录&#xff1a;源代码 一. 实验目的 本次实验旨在通过实现一个简单的通讯录管理系统&#xff0c;加深对C语言结构体、数组、指针、函数、控制结构等基本概念的理…...

基于Python爬虫+机器学习的长沙市租房价格预测研究

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

开发效率翻倍攻略!大学生电脑小白管理秘籍,资料秒搜技巧大公开!C盘满了怎么办?如何快速安全的清理C盘?烦人的电脑问题?一键解决!

如何正确管理自己的第一台电脑&#xff1f;大一新生如何管理自己的电脑&#xff1f;老鸟如何追求快捷操作电脑&#xff1f; 文章目录 如何正确管理自己的第一台电脑&#xff1f;大一新生如何管理自己的电脑&#xff1f;老鸟如何追求快捷操作电脑&#xff1f;前言初级基础分区操…...

[C#数据加密]——MD5、SHA、AES、RSA

一、C#数据加密介绍 数据加密是信息安全领域的一个重要组成部分&#xff0c;它用于保护数据不被未授权访问。以下是一些常见的加密算法和方法&#xff1a; 1、MD5 (Message Digest Algorithm 5): 一种广泛使用的哈希函数&#xff0c;可以产生128位的哈希值。通常用于验证文件完…...

QT不阻塞UI的方式

方法1&#xff1a;QtConcurrent #include <QtConcurrent> #include <QFuture> #include <QFutureWatcher> #include <QDebug>void longRunningTask() {// 模拟耗时操作QThread::sleep(5); }void startTask() {QFuture<void> future QtConcurre…...

鸿蒙HarmonyOS开发:常用布局及实用技巧

文章目录 一、概述二、盒子模型三、线性布局&#xff08;Column/Row&#xff09;1、space属性2、justifyContent属性3、alignItems属性 四、实用技巧1、Blank组件的使用2、layoutWeight属性的使用 一、概述 布局是指对页面组件进行排列和定位的过程&#xff0c;其目的是有效地…...

【解答】洛必达法则的使用条件及常见错误,洛必达法则的适用条件,常见的易错点,2022数一第一题例题

目录 洛必达法则的使用条件及常见错误 洛必达法则的适用条件 常见的易错点 举例说明&#xff08;见D选项&#xff09; 总结 &#x1f308; 嗨&#xff0c;我是命运之光&#xff01; &#x1f30c; 2024&#xff0c;每日百字&#xff0c;记录时光&#xff0c;感谢有你&…...

使用Python下载飞书共享表格数据教程

写在前面 随着企业协作办公软件的流行&#xff0c;飞书以其高效的协作能力和便捷的共享功能&#xff0c;成为了许多公司必备的工具之一。在日常工作中&#xff0c;我们经常需要从飞书中下载共享的表格数据进行分析。本文将详细介绍如何使用Python下载飞书共享表格数据。 前置…...

2025最权威的六大降AI率方案推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 减少AIGC&#xff08;人工智能生成内容&#xff09;的痕迹&#xff0c;要从多方面入手&…...

实战指南:基于快马平台生成vscode电商后台管理项目脚手架

最近在做一个电商后台管理系统的前端项目&#xff0c;正好尝试了用InsCode(快马)平台来生成项目脚手架&#xff0c;整个过程比我预想的要顺畅很多。作为一个经常用VSCode开发的前端工程师&#xff0c;这次体验让我发现原来项目初始化可以这么高效。下面分享下具体实现过程和几点…...

B站视频下载高效解决方案:bilibili-downloader完全指南

B站视频下载高效解决方案&#xff1a;bilibili-downloader完全指南 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 你是否遇到过这些困…...

HR 简历管理软件全解析:功能、价值与实操指南

企业招聘过程中&#xff0c;简历管理是 HR 工作的核心环节。随着招聘渠道多元化与简历数量激增&#xff0c;传统人工管理模式已难以满足需求&#xff0c;存在效率低、易遗漏、难复用等问题。 HR 简历管理软件作为专业化工具&#xff0c;能实现简历集中整合、智能解析、高效筛选…...

如何高效解析城通网盘链接:这款开源工具让下载速度提升10倍

如何高效解析城通网盘链接&#xff1a;这款开源工具让下载速度提升10倍 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet ctfileGet作为一款专注于城通网盘链接解析的开源工具&#xff0c;通过纯前端技术…...

如何用abcjs在浏览器中快速生成专业五线谱:完整免费教程

如何用abcjs在浏览器中快速生成专业五线谱&#xff1a;完整免费教程 【免费下载链接】abcjs javascript for rendering abc music notation 项目地址: https://gitcode.com/gh_mirrors/ab/abcjs 在数字化音乐创作与分享的时代&#xff0c;abcjs作为一个强大的JavaScript…...

新手零基础入门:用快马平台可视化学习openclaw核心配置

作为一名刚接触机器人开发的新手&#xff0c;我最近在学习openclaw机械爪的配置时遇到了不少困惑。那些抽象的参数名称和数值范围让我一头雾水&#xff0c;直到发现了InsCode(快马)平台的可视化学习方式&#xff0c;才真正理解了这些配置参数的实际意义。下面分享我的学习笔记&…...

从零到精通:Vue3.0中使用vuedraggable实现完美拖拽功能的5个关键技巧

从零到精通&#xff1a;Vue3.0中使用vuedraggable实现完美拖拽功能的5个关键技巧 在当今前端开发领域&#xff0c;交互体验的重要性日益凸显&#xff0c;而拖拽功能作为提升用户操作直观性的核心手段&#xff0c;已经成为现代Web应用的标配。Vue3.0凭借其出色的响应式系统和组合…...

Open Multiple URLs:5倍效率提升的批量链接管理工具,让多任务处理不再繁琐

Open Multiple URLs&#xff1a;5倍效率提升的批量链接管理工具&#xff0c;让多任务处理不再繁琐 【免费下载链接】Open-Multiple-URLs Browser extension for opening lists of URLs built with Vue.js on top of WebExtension with cross-browser support 项目地址: https…...

实战派必备:基于快马平台打造全能型ventoy系统救援启动盘

实战派必备&#xff1a;基于快马平台打造全能型ventoy系统救援启动盘 最近在折腾系统维护工具时&#xff0c;发现ventoy真是个神器。它不仅能同时装多个系统镜像到一个U盘&#xff0c;还能自定义菜单和工具包。不过网上的ventoy教程大多只教基础用法&#xff0c;真正适合实战的…...