欢迎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 HistorianGitHub文档运行操作就可以.

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!

使用BatteryHistorian分析和优化应用电量的更多相关文章

  1. PC虚拟现实应用的性能分析与优化:从CPU角度切入

    如今,虚拟现实 (VR) 技术正日益受到欢迎,这主要得益于遵循摩尔定律的技术进步让这一全新体验在技术上成为可能.尽管虚拟现实能给用户带来身临其境般的超凡体验,但相比传统应用,其具有双目渲染.低延迟.高 ...

  2. CssStats – 分析和优化网站 CSS 代码的利器

    CssStats 是一个在线的 CSS 代码分析工具,你只需要输入网址或者直接 CSS 地址即可进行 CSS 代码的全方位分析,是前端开发人员和网页设计师分析网站 CSS 代码的利器,可以统计出 CS ...

  3. MYSQL索引结构原理、性能分析与优化

    [转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...

  4. 1.linux服务器的性能分析与优化

    [教程主题]:1.linux服务器的性能分析与优化 [课程录制]: 创E [主要内容] [1]影响Linux服务器性能的因素 操作系统级 CPU 目前大部分CPU在同一时间只能运行一个线程,超线程的处 ...

  5. mysql性能优化-慢查询分析、优化索引和配置

    一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1)      max_connec ...

  6. Web服务器性能监控分析与优化

    Web服务器性能监控分析与优化 http://www.docin.com/p-759040698.html

  7. JDBC性能分析与优化

    JDBC性能分析与优化V1.0http://www.docin.com/p-758600080.html

  8. JVM性能分析与优化

    JVM性能分析与优化: http://www.docin.com/p-757199232.html

  9. 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化

    高性能Linux服务器 第10章    基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...

随机推荐

  1. opencv中ptr的使用

    #include <QCoreApplication> #include<stdio.h> #include<opencv2/highgui/highgui.hpp> ...

  2. 并查集--poj 2492

    Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes ...

  3. luogu2805 [NOI2009]植物大战僵尸

    想象一下,要搞掉一个植物,必须先搞掉另一些植物--我们可以发现这是一个最大权闭合子图的问题. 最大权闭合子图的话,太空飞行计划问题是一个入门题,可以一看. 然而我们手玩一下样例就会惊恐地发现,保护关系 ...

  4. Ext.js数据展示问题name展示code

    出现以上问题是因为model中定义的类型跟数据库不匹配 去掉js中vehicleModel的type或者改为type:'int'即可.

  5. 大数据学习——sqoop导入数据

    把数据从关系型数据库导入到hadoop 启动sqoop 导入表表数据到HDFS 下面的命令用于从MySQL数据库服务器中的emp表导入HDFS. sqoop import \ --connect jd ...

  6. Webstrom卡顿问题解决

    1.设置node_modules 打开项目,新建node_modules空文件夹,然后右击选择Mark Directory as,选择Excluded. 2.设置ingore文件 files-> ...

  7. 九度oj 题目1201:二叉排序树

    题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历. 输入: 输入第一行包括一个整数n(1<=n<=100).    接下来的一行包括n个整数. 输出: 可能有多组测试 ...

  8. BZOJ 1778 [Usaco2010 Hol]Dotp 驱逐猪猡 ——期望DP

    思路和BZOJ 博物馆很像. 同样是高斯消元 #include <map> #include <ctime> #include <cmath> #include & ...

  9. [BZOJ3545] [ONTAK2010]Peaks(线段树合并 + 离散化)

    传送门 由于困难值小于等于x这个很恶心,可以离线处理,将边权,和询问时的x排序. 每到一个询问的时候,将边权小于等于x的都合并起来再询问. .. 有重复元素的线段树合并的时间复杂度是nlog^2n # ...

  10. BZOJ3122 [Sdoi2013]随机数生成器 【BSGS】

    题目 输入格式 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b,X1,t,表示一组数据.保证X1和t都是合法的页码. 注意:P一定为质数 输出 ...