使用BatteryHistorian分析和优化应用电量
在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!
使用BatteryHistorian分析和优化应用电量的更多相关文章
- PC虚拟现实应用的性能分析与优化:从CPU角度切入
如今,虚拟现实 (VR) 技术正日益受到欢迎,这主要得益于遵循摩尔定律的技术进步让这一全新体验在技术上成为可能.尽管虚拟现实能给用户带来身临其境般的超凡体验,但相比传统应用,其具有双目渲染.低延迟.高 ...
- CssStats – 分析和优化网站 CSS 代码的利器
CssStats 是一个在线的 CSS 代码分析工具,你只需要输入网址或者直接 CSS 地址即可进行 CSS 代码的全方位分析,是前端开发人员和网页设计师分析网站 CSS 代码的利器,可以统计出 CS ...
- MYSQL索引结构原理、性能分析与优化
[转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...
- 1.linux服务器的性能分析与优化
[教程主题]:1.linux服务器的性能分析与优化 [课程录制]: 创E [主要内容] [1]影响Linux服务器性能的因素 操作系统级 CPU 目前大部分CPU在同一时间只能运行一个线程,超线程的处 ...
- mysql性能优化-慢查询分析、优化索引和配置
一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1) max_connec ...
- Web服务器性能监控分析与优化
Web服务器性能监控分析与优化 http://www.docin.com/p-759040698.html
- JDBC性能分析与优化
JDBC性能分析与优化V1.0http://www.docin.com/p-758600080.html
- JVM性能分析与优化
JVM性能分析与优化: http://www.docin.com/p-757199232.html
- 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化
高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...
随机推荐
- I2C驱动框架(一)
参考:I2C子系统之内核中I2C子系统的结构 结合vmlinux.lds和Makefile可确定i2c初始化函数的执行顺序如下: 1./dricer/i2c/i2c-core.c中的函数:i2c_in ...
- Lex与Yacc学习(六)之lex & yacc (简单计算器程序) 运行
词法分析程序ch3-01.l %{ #include "ch3-01.tab.h" extern int yylval; %} %% [0-9]+ { yylval = atoi( ...
- CentOS安装mysql5.6
1. 去官网https://dev.mysql.com/downloads/mysql/5.6.html下载mysql压缩包,选第一个,最大最全的 2. 通过FTP工具比如FileZila存放到目标地 ...
- IOS 自动布局-UIStackPanel和UIGridPanel(一)
我以前是做windows phone开发的,后来转做IOS的开发,因此很多windows phone上面的开发经验也被我带到了IOS中.其实有些经验本身跟平台无关,跟平台有关的无非就是实现方法而已.好 ...
- hdu2022
#include <stdio.h> #include <math.h> #define here puts("go,go,go!\n") int main ...
- ListView虚拟模式封装
public class ListViewAH : ListViewEx { #region 虚拟模式相关操作 ///<summary> /// 前台行集合 ///</summary ...
- 【Go】并发编程
Go语言宣扬用通讯的方式共享数据. Go语言以独特的并发编程模型傲视群雄,与并发编程关系最紧密的代码包就是sync包,意思是同步.同步的用途有两个,一个是避免多个线程在同一时刻操作同一个数据块,另一个 ...
- 03-offsetParent属性
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 刷题总结——小凸玩矩阵(scoi)
题目: 题目背景 SCOI2015 DAY1 T1 题目描述 小凸和小方是好朋友,小方给了小凸一个 n×m(n≤m)的矩阵 A,并且要求小凸从矩阵中选出 n 个数,其中任意两个数都不能在同一行或者同一 ...
- 关于java读取文件IO流学习总结(一)
IO流的分类: 1.根据流的数据对象来分: 高端流:所有的内存中的流都是高端流,比如:InputStreamReader 低端流:所有的外界设备中的流都是低端流,比如InputStream,Outpu ...