Android性能优化篇之电量优化(1)——电量消耗分析

image

引言

1. Android性能优化篇之内存优化--内存泄漏

2.Android性能优化篇之内存优化--内存优化分析工具

3.Android性能优化篇之UI渲染性能优化

4.Android性能优化篇之计算性能优化

5.Android性能优化篇之电量优化(1)——电量消耗分析

6.Android性能优化篇之电量优化(2)

7.Android性能优化篇之网络优化

8.Android性能优化篇之Bitmap优化

9.Android性能优化篇之图片压缩优化

10.Android性能优化篇之多线程并发优化

11.Android性能优化篇之数据传输效率优化

12.Android性能优化篇之程序启动时间性能优化

13.Android性能优化篇之安装包性能优化

14.Android性能优化篇之服务优化

介绍

当我们使用Android完成任务时,设备硬件正在快速消耗电池电量来完成这些任务。任务越繁重,消耗的电量越多越快。这样用户就会在想是哪一个应用导致电量消耗的怎么快的?
要想写出耗电量低的应用的关键是要透彻理解电量消耗的全部过程。
我们很想知道我的应用执行的哪些任务消耗的电量是最多的?这个问题确实会很棘手。电量消耗的计算与统计是一件麻烦而且矛盾的事情,记录电量消耗本身也是一个费电量的事情。唯一可行的方案是使用第三方监测电量的设备,这样才能够获取到真实的电量消耗(因为第三方硬件监测的时候是用的自己的供电而不是用的手机的电量)。

1.电量消耗分析

待机状态的电量消耗



使用和唤醒屏幕后


image2.png

当设备从休眠状态中,被应用程序假面唤醒时,你会看到在第一次唤醒时,这里有一条电量使用高峰线

CUP唤醒时的高峰线


image3.png

后续的一些执行的消耗


image4.png

值得注意的是当工作完成后,设备会主动进行休眠,这非常重要,在不使用或者很少使用的情况下,长时间保持屏幕唤醒会迅速消耗电池的电量。

蜂窝式无线
当设备通过无线网发送数据的时候,为了使用硬件,这里会出现一个唤醒好点高峰。接下来还有一个高数值,这是发送数据包消耗的电量,然后接受数据包也会消耗大量电量 也看到一个峰值。
所以我们指导了,开启无线模式这个过程非常耗电,那么硬件这块为了防止频繁开启关闭耗电,采取了一个无奈的办法,会在一个小段时间内保持开启模式,防止短时间内还有数据包需要接收。这些数据非常有用,可是 不是所有开发者都有这个第三方设备跟踪。但是使用Android L版本就可以利用到新的一系列的工具来优化应用程序的耗电。(这里显然不要考虑兼容性问题吧,我只是想测电量消耗问题,同一款APP在不同版本上耗电情况应该不会有太大影响。)


image5.png
2.Battery Historian(电量使用记录分析工具)

Battery Historian是Android 5.0开始引入的新API。通过下面的指令,可以得到设备上的电量消耗信息:

2.1 配置分析环境

第一种 通过安装Docker环境来安装
因本人没有使用这种,想要了解的朋友可以参考文档
第二种 源码安装

(1).GO环境安装下载
(2). 安装Git下载
(3). 安装Python下载
(4). 安装Java环境
(5). 下载Battery Historian源码并且运行
下载源码
    go get -d -u github.com/google/battery-historian/
运行Battery Historian
    cd $GOPATH/src/github.com/google/battery-historian
    go run setup.go
开启服务
    go run cmd/battery-historian/battery-historian.go
检查/battery-historian是否运行
    登录网址 http://localhost:9999查看    
详细可以参考Google官方的文档查看
2.2 导出电量发现文件

historian-V1

    $ adb shell dumpsys batterystats > xxx.txt  //得到整个设备的电量消耗信息
    $ adb shell dumpsys batterystats > com.package.name > xxx.txt //得到指定app相关的电量消耗信息

historian-V2
android 6.0 以及以下版本

    adb bugreport > bugreport.txt

android 7.0

    adb bugreport bugreport.zip
2.3 开始分析

启动battery-historian服务,打开http://localhost:9999,上传bugreport.txt或者bugreport.zip文件

image6.png

image7.png
3.battery-historian分析

现在我们就来分析下面的面板:

image8.png

横坐标
我们看到下面的横坐标是代表上海的时间.
坐标就是一个时间范围,咱们的例子中统计的数据是以重置为起点,获取bugreport内容时刻为终点。我们一共采集了多长时间的数据,图表下也有信息说明。(经其他人的反馈,这个坐标间隔是会随着时间的长度发生改变,所以要以你的实际情况为准。通过滚动鼠标来调整缩放级别)
纵坐标
纵坐标的数据有点多,我们来一个一个分析。
battery_level
电量等级我们看到面板的右边就是电量等级的指标,横着面板的黑线就代表电量等级,我们可以把鼠标放到上面来查看电量的等级值。
也可以在横坐标的battery_level来查看


image9.png
image10.png

显示当前时间,电量等级等等。

CPU running

界面的状态,主要判断是否处于idle的状态。用来判断无操作状态下电量的消耗。

Userspace wakelock

wake_lock 该属性是记录wake_lock模块的工作时间。是否有停止的时候等

Screen

屏幕是否点亮,这一点可以考虑到睡眠状态和点亮状态下电量的使用信息。

Top app

该栏显示当前时刻哪个app处于最上层,就是当前手机运行的app,用来判断某个app对手机电量的影响,这样也能判断出该app的耗电量信息。该栏记录了应用在某一个时刻启动,以及运行的时间,这对我们比对不同应用对性能的影响有很大的帮助。

Activity Manager Proc
Mobile signal strength

移动信号强度

Wifi scan

wifi扫描的时间

Wifi supplicant

当前wifif状态

Wifi radio

wifi信号

Wifi signal strength

wifi信号强度

Wifi running

wifi是否连接

Wifi on

wifi是否开启

Audio

音频播放的时间点

Temperature

当前手机温度

Plugged

充电状态,这一栏显示是否进行了充电,以及充电的时间范围。

Charging on

是否在充电

health

电池健康状态的信息,这个信息一定程度上反映了这块电池使用了多长时间。
这一栏记录电池状态在何时发生改变,上面的图中电池状态一直处于good状态。

plug

充电方式,usb或者插座,以及显示连接的时间。
这一栏显示了不同的充电方式对电量使用的影响。

Job

后台的工作,比如服务service的运行。从下面图中可以看到qihoo的AppStore和鲁大师都在运行后台服务。

data_conn

数据连接方式的改变,上面的edge是说明采用的gprs的方式连接网络的。此数据可以看出手机是使用2g,3g,4g还是wifi进行数据交换的。这一栏可以看出不同的连接方式对电量使用的影响。

status

电池状态信息,有充电,放电,未充电,已充满,未知等不同状态。
这一栏记录了电池状态的改变信息。

phone_signal_strength

手机信号状态的改变。
这一栏记录手机信号的强弱变化图,依次来判断手机信号对电量的影响。

Sync

是否跟后台同步.

可以把鼠标停在某一项上面。可以看到何时sync同步 启动的,持续时间Duration多久。

电池容量不会显示单一行为消耗的具体电量,这里只能显示使用电池的频率和时长,你可以看分时段的剩余电量来了解具体消耗了多少电量。

wake_lock_in

wake_lock有不同的组件,这个地方记录在某一个时刻,有哪些部件开始工作,以及工作的时间。

gps

gps是否开启

phone_in_call

是否进行通话

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 一、电量消耗理论与分析 写出耗电量低的应用的关键是要透彻理解它的理论以及全部过程。下面将对电量消耗的相关理论知识进...
    香沙小熊阅读 4,588评论 4 4
  • 先来一发苹果官网上Instruments User Guide,其实没啥用,英语不好的也懒得去看。(反正我是看不懂...
    和珏猫阅读 29,796评论 51 376
  • 养心灵感语录:当水源出现问题的时候,大家如果只是在自己所属的阀门装过滤器,而对源头忽略不计,不久的将来,势必全军覆没!
    一家女主人阅读 178评论 0 0
  • 我们的思路应该就是一个主界面 上面三个button,一个button下面的underline.这个underlin...
    NSGhoul阅读 979评论 0 1
  • 唐张彦远《历代名画记》记载:“颉有四目,仰观垂象。因俪乌龟之迹,遂定书字之形。造化不能藏其秘,故天雨粟;灵怪不能遁...
    木石堂阅读 2,302评论 3 5