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


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

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

    Battery

    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
    ")
    }

    安装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>]

    Command

    启动命令

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

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

    Webpage

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

    3. 分析

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

    adb bugreport > bugreport.txt

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

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

    系统状态

    System

    应用状态(简书)

    App


    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!

  • 相关阅读:
    如何得到数据绑定的树节点的父节点
    ImageBrush中的图片如何加载到到MemoryStream
    C#中动态加载和卸载DLL
    SetProcessWorkingSetSize减少内存占用
    wpf中如何改变Listbox选中项的颜色
    怎样把Visual Studio与Perforce关联起来
    在WPF里面如何使用FolderBrowserDialog
    关于WPF的ComboBox中Items太多而导致加载过慢的问题(转载)
    得到系统中所有正打开的文件
    把ResourceDictionary保存为文件,从外部xaml文件加载ResourceDictionary
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7220478.html
Copyright © 2020-2023  润新知