安卓APP耗电问题分析

Android 耗电分析
dumpsys命令介绍
1.命令说明
Dumpsys用户系统诊断,它运行在设备上,并提供系统服务状态信息
命令格式: adb shell dumpsys [system serbices]
https://www.cnblogs.com/JianXu/p/5376642.html
2. Android 系统服务一览表
https://blog.csdn.net/s13383754499/article/details/78599739
• 服务信息查询
在这里插入图片描述
网络信息查询
在这里插入图片描述
耗电分析
• adb shell dumpsys batterystats
• 这个命令可以打印出于电池消耗相关的信息,可以通过
• adb shell dympsys batterystats > D:/batterystats.txt
• 命令将内容输出到文本文件中。文件大致内容如下:
在这里插入图片描述
• 那有了这个报告之后该怎么分析耗电高,手机发热的原因呢?我们用notepad++打开该文件然后搜索“temp=”,会得出下面的结果:
在这里插入图片描述
数据分析工具:battery-historian
• google已经做了工具用于可视化的显示这个报告:https://github.com/google/battery-historian
我们只要跟着下面几个步骤做就可以查看可视化电池报告啦:
1.下载上面链接中的battery-historian工具并解压。
2.打开解压文件夹中的script文件夹。
3.在该路径下打开命令行窗口。
4.输入historian.py D:/batterystats.txt > D:/battery.html。这里需要安装python环境,我装的是python2.7,可以正常使用。
5.用chrome浏览器打开battery.html文件。
案例分析
https://jira.nq.com/jira/browse/PS-4416
各个参数的意义
• 横坐标
在这里插入图片描述
• 上面的10,20代表的就是秒的意思,它是以一分钟为周期,到第60秒的时候变为0。横坐标就是一个时间范围,咱们的例子中统计的数据是以重置为起点,获取Battery Report内容时刻为终点。我们一共采集了多长时间的数据,图表下也有信息说明。(经其他人的反馈,这个坐标间隔是会随着时间的长度发生改变,所以要以你的实际情况为准)
• 纵坐标
• 纵坐标的数据就很麻烦了,数据量太多,一条一条来吧。
• battery_level
• 电量,可以看出电量的变化。比如上图中的数据显示刚开始电量是100%,然后在第11秒-12秒中间的某个时刻降到了99%。
• plugged
• 充电状态,这一栏显示是否进行了充电,以及充电的时间范围。例如上图反映了我们在第22s插入了数据线,然后一直持续了数据采集结束。
• screen
• 屏幕是否点亮,这一点可以考虑到睡眠状态和点亮状态下电量的使用信息。
• top
• 该栏显示当前时刻哪个app处于最上层,就是当前手机运行的app,用来判断某个app对手机电量的影响,这样也能判断出该app的耗电量信息。该栏记录了应用在某一个时刻启动,以及运行的时间,这对我们比对不同应用对性能的影响有很大的帮助。
• wake_lock*
• wake_lock 该属性是记录wake_lock模块的工作时间。是否有停止的时候等
• running
• 界面的状态,主要判断是否处于idle的状态。用来判断无操作状态下电量的消耗。
• wake_lock_in
• wake_lock有不同的组件,这个地方记录在某一个时刻,有哪些部件开始工作,以及工作的时间。
• data_conn
• 数据连接方式的改变,上面的edge是说明采用的gprs的方式连接网络的。此数据可以看出手机是使用2g,3g,4g还是wifi进行数据交换的。这一栏可以看出不同的连接方式对电量使用的影响。
• status
• 电池状态信息,有充电,放电,未充电,已充满,未知等不同状态。
这一栏记录了电池状态的改变信息。
• phone_signal_strength
• 手机信号状态的改变。
这一栏记录手机信号的强弱变化图,依次来判断手机信号对电量的影响。
• health
• 电池健康状态的信息,这个信息一定程度上反映了这块电池使用了多长时间。
这一栏记录电池状态在何时发生改变,上面的图中电池状态一直处于good状态。
• plug
• 充电方式,usb或者插座,以及显示连接的时间。
这一栏显示了不同的充电方式对电量使用的影响。
GooglePlay_ Android vitals overview
https://play.google.com/apps/publish/?account=7247166036233706422#AppHealthOverviewPlace:p=com.netqin.ps&ts=THIRTY_DAYS&ahbt=BUSINESS
在这里插入图片描述
• 唤醒锁定操作卡住和唤醒锁定操作卡住(后台)
• 唤醒锁定操作卡住和唤醒锁定操作卡住(后台)页面会显示应用通过 PowerManager 类获取的部分唤醒锁定。部分唤醒锁定可确保 CPU 正常运行,但屏幕和键盘背光可以关闭。
• 数据收集详情
• 为了保护隐私,部分唤醒锁定识别标记已进行匿名化处理。
• 部分唤醒锁定的相关数据是系统在设备未充电以及屏幕关闭时收集的。
• 只有当应用在后台运行的时候,系统才会收集后台唤醒锁定操作卡住的相关数据。
• Google 会计算每次电池工作时段的部分唤醒锁定持续时间的上限,以显示受到长时间唤醒锁定影响的工作时段数。例如,如果用户触发两次 1 小时长的唤醒锁定,那么 Google 将使用的最大唤醒锁定值为 1 小时。
• 对于在清单文件中设置了 sharedUserId 的应用:只有当最多安装了一个具有相同 sharedUserId 的应用时,您才会看到相关数据。
• Vital 详细信息
• 受影响的工作时段数:用户遇到至少 1 次长达 1 小时以上的唤醒锁定的电池工作时段数百分比。
• 会话数:系统已记录的会话的大概数量。
• 第 90/99 个百分位:10%/1% 的每日工作时段中用户遇到部分唤醒锁定持续时间高于显示的数字。
• 最低 25%:如果您的应用发生问题的工作时段比例等于或高于显示的阈值,则系统会将此应用归在这项指标的最低 25% 区间(依据为 Google Play 上前 1000 个热门应用,按安装量统计)。
• 解决问题
• 如果您的应用经常发生唤醒锁定现象,请转到 Android 开发者网站,了解我们推荐的解决方案。
• 唤醒次数过多
• 唤醒次数过多页面会显示由应用触发的 Alarm Manager 唤醒次数。您会看到类 ELAPSED_REALTIME_WAKEUP 或 RTC_WAKEUP 的唤醒数据。
• 数据收集详情
• 为了保护隐私,唤醒识别标记已进行匿名化处理。
• 唤醒次数是系统在设备未充电时收集的。
• 为了提供标准化指标,系统会将唤醒次数与设备使用电池的时间进行比较。Google 会计算每个用户在每小时的唤醒次数,以显示受到高唤醒率影响的用户数。
• 对于在清单文件中设置了 sharedUserId 的应用:只有当最多安装了一个具有相同 sharedUserId 的应用时,您才会看到相关数据。
• Vital 详细信息
• 受影响的工作时段数:用户遇到每小时 10 次以上唤醒的电池工作时段数百分比。电池会话是指设备在两次充满电之间的间隔时间。Google 仅会在设备未充电时收集这项数据。
• 会话数:系统已记录的会话的大概数量。
• 第 90/99 个百分位:10%/1% 的每日工作时段中用户每小时遇到唤醒次数高于显示的值。
• 最低 25%:如果您的应用发生问题的工作时段比例等于或高于显示的阈值,则系统会将此应用归在这项指标的最低 25% 区间(依据为 Google Play 上前 1000 个热门应用,按安装量统计)。
• 解决问题
• 如果您的应用的唤醒次数频繁,请转到 Android 开发者网站,了解我们推荐的解决方案。
How to Optimize
https://developer.android.com/topic/performance/vitals/wakelock

猜你喜欢

转载自blog.csdn.net/qq_42559334/article/details/82796627