性能作为app非常重要的指标,自然需要得到重视。这两天简单了解了下电量性能统计工具Battery Historian,让作为小白的我有了些头绪。
一,有那些耗电项?
(1)屏幕。如今的手机分辨率越来越高,进而导致使用时耗电显著增加(可以对比以前老人机和现在大屏手机,续航能力根本没法比)
(2)wifi和蜂窝无线。作为数据报文传输的依赖组件,该组件会持续消耗电能。
(3)CPU。毫无疑问,处理器计算是消耗电能的,大量的计算,大的cpu的使用率甚至会导致机身发烫的现象。
(4)GPS及其他传感器等等。定位能力,传感器都会消耗电。
这些耗电项大家也都比较清楚,难点是怎么形成统计数据,图表去客观的告知开发者定位耗电问题?
二,Battery Historian 电量工具
二,Battery Historian 电量工具
该工具是google提供用于帮助开发者去分析手机耗电原因及明确优化方向,现在已经是2.0版本了,通过go语言写的,以前1.0版本是通过python执行的(我也没有用过1.0, 需要了解1.0的网上进一步了解)。
1,工具准备
细节集成教程网上都有,我这边就大体说下集成思路。
细节集成教程网上都有,我这边就大体说下集成思路。
(1)需要依赖 Go, Python(执行脚本语言); Git (github上下载资源)。
(2)Go配置环境变量(设置工作目录,安装目录),后面执行go命令默认下载资源到工作目录中
(2)Go配置环境变量(设置工作目录,安装目录),后面执行go命令默认下载资源到工作目录中
(3) Go命令执行
1),下载电量工具
go GET -u github.com/golang/protobuf/proto
go GET -u github.com/golang/protobuf/proto-gen-go
go GET -u github.com/google/battery-historian (下载 google电量工具)
2),执行电量工具工程的设置
进入battery-historian目录下,执行go run setup.go 执行当前工程自动配置
3), 执行成功后,我们就要开始运行我们电量工具啦(当前目录下执行实际脚本)
go run cmd\battery-historian\battery-historian.go
(4), 此时启动了服务, 执行 localhost:9999 打开对应服务页面 。(注:需要翻墙才能最终数据加载)
2),执行电量工具工程的设置
进入battery-historian目录下,执行go run setup.go 执行当前工程自动配置
3), 执行成功后,我们就要开始运行我们电量工具啦(当前目录下执行实际脚本)
go run cmd\battery-historian\battery-historian.go
(4), 此时启动了服务, 执行 localhost:9999 打开对应服务页面 。(注:需要翻墙才能最终数据加载)
(5), 工具服务启动完毕了,接下来就是数据源来源
android系统会产生bugreport文件,记录耗电等信息,我们需要导出该文件 adb bugreport > bugreport.txt
2, 工具简单使用
(1) 总体统计
比较重要指标 screen 屏幕耗电, cpu 执行, userspace wakelock 应用唤醒锁, JobScheduler调度器(系统同于调度,类似于alarm,5.0以上存在) ,wifi , mobile 等
(2)系统状态
(2)系统状态
系统状态统计,包含整体系统当前的状态(包含不同应用的使用信息)
(3),应用状态
(3),应用状态
统计精确应用,通过他我们就可以知道,我们当前应用做存在哪些service,哪些地方定义了wakelock等等,以及耗电信息。
三, 耗电优化方向
应用最好不要盲加干预系统正常休眠,休眠的话会极大减少耗电。
应用本身减少不必要的后台服务(Service, GPS) 等等
休眠状态时支持wakelock去唤醒手机,因此不要频繁的唤醒手机(手机进入休眠本身就是需要时间的),
只有在特别需要的时候才去唤醒。且wakelock一定要用完后释放掉,避免引起不必要的耗电。
于此同时,对于不重要的事情,Alarm服务也不要频繁定时触发,可以适当的不定时触发(根据手机自身状态调配)。
使用JobScheduler去分发任务(不同app都使用它去让系统统一调配任务,而不是各自为政,频繁唤醒)