Android电量优化

652 阅读2分钟

Tools for Battery Optimization

1. Get Barrery History By System File

//if Your platform is 4.1-4.3, using under command
adb shell dumpsys batteryinfo
//others
adb shell dumpsys batterystats > packageName > batterystats.txt
adb shell dumpsys batterystats > batterystats.txt

2. Battery Historian

关于Battery Historian,详见Google-Battery Historian

默认地址:localhost:9999

//重置Battery history
adb shell dumpsys batterystats --reset
//启用weaklock
adb shell dumpsys batterystats --enable full-wake-history
//导出bugreport
adb bugreprot > desktop/bugreport.txt

//And then, You should enable The Batttery Historian by under commands
cd $GOPATH/src/github.com/google/battery-historian
go run setup.go
go run cmd/battery-historian/battery-historian.go 

//At last, upload this bugreport.txt to Battery Historian

battery Historian chart

battery Historian analyse

3. Profile GPU Rendering【显示GPU渲染】

Profile GPU Rendering

View-->DisplayList--> OpenGl ES

绿色:代表16ms。在Android中,如果帧率为60fps,则页面不会卡顿。但是在绘制时,如果丢帧,则帧率小于60fps,则会出现卡顿。 蓝色:View要绘制在屏幕上,则需要将View#onDraw方法中的规定转为GPU可识别的格式DisplayList并将其缓存起来,蓝色即代表了该段时长。 紫色:代表将DisplayList转到绘制线程所需要的时间 红色:代表系统使用OpenGL ES将DisplayList绘制在屏幕上所需要的时间。 橙色:所有GPU的命令均来自于CPU,CPU把命令发送给GPU之后,会在GPU的队列中进行排队,如果此时队列已满,则CPU必须阻塞直至队列中有位并将命令放在队列中。橙色即代表了CPU的等待时长,也就是说黄色越长,GPU做的事情越多。黄色过长,则表示GPU做了太多的事。

4. Tencent GT

关于GT

Some Principles of Battery Optimization

  1. 蜂窝比WIFI更耗电
  2. 尽量在充电时去做一些非常耗时的操作
  3. 在蜂窝移动网络下,最好做到批量执行网络请求,尽量避免频繁的网络请求
  4. JosScheduler,使用JobScheduler来将一些不紧急的任务缓存起来,选择合适的时间,合适的网络,再一起执行。JobScheduler的用法
  5. WakeLock,App在前台运行时,不要注册WakeLock,因为此时注册时没有意义的,却会被计算到应用耗电消耗中。还有注意尽量使用partial wake lock替代full wake lock。WakeLock用法
  6. 优化AlarmManager的提醒方式。AlarmManager用法
  7. 注意GPS,传感器的使用
  8. 对于资讯类App来说,最愚蠢的数据读取方式莫过于只读取顶层缩略信息,因为这样可能会导致radioc持续保持运行态,从而导致高电耗。正确的做法应该是读取一组咨询及咨询的详细内容并预读取下一组的内容。电量优化系列视频参考文章
    预读取原理图