【学习笔记】移动端性能--耗电量--电量统计原理

本文详细解读Android4.1及以上版本的电池信息接口,介绍了如何通过系统文件获取电量记录,重点关注了CPU、wakelock、数据传输、WiFi、GPS等不同因素对电量的影响,并展示了如何利用ADB shell命令进行电量统计分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考《移动APP性能评测与优化》的学习笔记。

一、Android电量统计接口

Android4.1版本以后在系统增加了 battery info 模块,记录一定时间周期内整机的功耗状态以及每个应用的功耗详情。

Android系统上APP的电量消耗由 cpu、wake lock、数据传输(移动网络&WIFI)、WIFI运行、GPS、other sensors组成。

在ROM源码中,组成APP电量消耗各部分定义如下:

1、CPU的电量消耗

cpuSpeedStepTimes[step] / totalTimeAtSpeeds * (userTime + systemTime) * powerCpuNormal[step];

2、wake lock的电量消耗

进程wakelock时间 * power_profiler.xml中type=cpu_awake的数值;

3、数据传输的电量消耗

进程数据传输量 * getAverageDataCost();

4、WIFI运行的电量消耗

进程WIFI运行时间 * power_profiler.xml中type=wifi_on的数值;

5、GPS的电量消耗

传感器时间 * power_profiler.xml中type=gps_on的数值;

6、other sensors的电量消耗

传感器时间 * 默认传感器的电量消耗

手机其他部分的电量消耗定义如下:

1、蜂窝通信电量消耗

运行时间 * power_profiler.xml中type=radio_active的数值;

2、屏幕电量消耗

开屏能量消耗 + 亮度能量消耗;

3、信号电量消耗

处于各信号强度下的能量消耗 + 扫描信号时的能量消耗;

4、WIFI电量消耗

WIFI开启能量消耗 + WIFI运行能量消耗;

5、CPU空闲时电量消耗

空闲时间 * power_profiler.xml中type=cpu_idle的数值;

6、蓝牙模块电量消耗

打开蓝牙的能量消耗 + 蓝牙在AT command下的能量消耗 + 进程蓝牙能量消耗;

二、通过系统文件获取电量记录

就像Linux系统对各个应用在CPU、内存上的消耗有详细的记录一样,Android系统在运行过程中在帮助解决功耗问题上或许也会留下一些记录。

Android在4.1版本以后加入了 battery info 模块,详细记录手机运行状态变化的时间点及对应的内容;

在Android5.0后Google使用工具Battery Historian 在Web端更直观地展示手机状态岁时间的变化。

而且随着6.0更新了Battery Historian2.0加入引起手机状态变化的应用,更好帮助开发者控制应用功耗;

在手机连接PC后,在终端输入命令 adb shell dumpsys batterystats 打印出详细的功耗相关信息,一类整机状态,一类应用状态。

举例 -16h26m01s882ms  090    64020241  +wakelock,表示在手机使用adb shell dumpsys batterystats之前16h26m01s882ms 的时候,手机电量剩余90%;

系统应用在这个时刻申请了一个wakelocks锁;系统的整体状态是64020241,这一串数字是对系统状态的记录;

在低16位中,每4位表示一种状态:

第0-3位表示系统屏幕的亮度,其值可以是0-5,依次表示dark、dim、medium、light、bright、other;

第4-7位表示信号强度,其值可以是0-5,依次表示none、poor、moderate、good、great、other;

第8-11位表示电话状态,其值可以是0-4,依次表示in、out、emergency、off、other;

第12-15位表示移动网络传输的状态,其值可以是0-15,依次表示none、gprs、edge、umts、cdma、evdo_0、evdo_A 、1xrtt 、 hsdpa、 hsupa、hspa、iden、evdo_b、Ite、ehrpd、hspap、other。

高16位每一位表示一种状态:16-30位依次表示的状态为bluetooth、WiFi、phone_in_call、plugged、screen、video、audio、wifi_mulicast、wifi_mulicast、wifi_scan、wifi_full_lock、wifi_running、phone_scan、gps、sensor、wake_lock。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值