首页 > 代码库 > 使用BatteryHistorian分析和优化应用电量

使用BatteryHistorian分析和优化应用电量

欢迎Follow我的GitHub, 关注我的CSDN.

在Android项目中, 较难监控应用的电量消耗, 可是用户却很关心手机的待机时间. 过度耗电的应用, 会遭到用户无情的卸载, 不要存在侥幸心理, 给竞品带来机会. 因此, 我们须要研究应用的耗电量, 并进行优化. 本文解说一下Battery Historian, 是一款由Google提供的Android系统电量分析工具. 在网页中展示手机的电量消耗过程, 输入电量分析文件, 显示消耗情况. 最后提供一些电量优化的方法, 可供參考.

技术分享

1. 安装Go

Battery Historian是Go语言开发, 须要安装Go编译环境.
下载Mac版的安装包, 运行完毕, 检查Go版本号

?  ~ go version
go version go1.6 darwin/amd64

.bash_profile中, 设置Go语言变量

#Go Settings
export GOPATH=/Users/.../Workspace/GoWorkspace
export GOBIN=/Users/.../Workspace/GoWorkspace/bin

GOPATH源代码地址. GOBIN生成地址, 推荐$GOPATH/bin.
运行source .bash_profile, 应用profile配置.

新建src文件夹, 加入HelloWorld文件hello.go.

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

安装hello.go

go install hello.go

运行

$GOBIN/hello

假设显示hello, world, 即表示安装完毕.


2. Battery Historian

在安装Battery Historian时, 须要提前安装wget.

sudo brew install wget

依照Battery Historian的GitHub文档运行操作就可以.

go get -u github.com/golang/protobuf/proto
go get -u github.com/golang/protobuf/protoc-gen-go
go get -u github.com/google/battery-historian/...
cd $GOPATH/src/github.com/google/battery-historian
bash setup.sh
# 运行Go脚本, 默认端口9999 
go run cmd/battery-historian/battery-historian.go [--port <default:9999>]

技术分享

启动命令

cd $GOPATH/src/github.com/google/battery-historian
go run cmd/battery-historian/battery-historian.go [--port <default:9999>]

在浏览器中, 输入http://localhost:9999/, 就可以启动电量检測页面.

技术分享

在启动页面时, 可能须要连接VPN, 訪问Google信息.

3. 分析

获取手机的电量文件, 导出到根文件夹, 以备Battery Historian使用.

adb bugreport > bugreport.txt

使用Battery Historian的网页载入bugreport.txt文件.

如遇到一些问题, 又一次提交bugreport.txt文件.

系统状态

技术分享

应用状态(简书)

技术分享


4. 电量优化

依据Battery Historian的电量提示信息, 消耗电量包括
唤醒锁\SyncManager同步管理器\音视频\流量.

优化方式:
(1) 检查所有唤醒锁, 是否存在冗余或者没用的位置.
(2) 集中相关的数据请求, 统一发送; 精简数据, 降低无用数据的传输.
(3) 分析和统计等非重要操作, 能够在电量充足或连接WIFI时进行, 參考JobScheduler.
(4) 精简冗余的服务(Service), 避免长时间运行耗电操作.
(5) 注意定位信息的获取, 使用后及时关闭.


电量优化并非很难, 但须要对业务很熟悉, 了解一些耗电操作的使用情况, 及时优化. 仅仅有给用户精致的体验, 用户才干更加喜欢我们的应用, 这就是服务型社会的本质.

本文地址: http://blog.csdn.net/caroline_wendy/article/details/50769915

That’s all! Enjoy it!

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

使用BatteryHistorian分析和优化应用电量