App电量优化方案

一.设备电量消耗情况排查

   1.工具

  • Batterystats工具 ;收集设备电量消耗数据
  • Battery Historian工具; 将 Batterystats收集的数据转成html,方便在浏览器上查看(Battery Historian工具是开源项目,可以在github上搜索)

  2.关注重点

  • 在将数据转成html后 ,  我们主要关注设备的cpu ,屏幕唤醒 , 移动网络 , wifi网络 , gps 使用情况,然后分析以上模块是否有使用不当的情况,进而优化.

  3.优化方面

  • 界面优化
  • 网络优化
  • 内存优化

 

二.优化

    1.界面优化

         常见的界面问题有界面卡顿 , 我们可以通过查看界面在单位时间内的丢帧情况来判断是否卡顿,当帧率达到60FPS以上就可以明显感觉到app的流畅性,所以app的目标就是保持60FPS,这意味 每一帧 只有 16ms == 1000 / 60的时间来处理所有的任务,android系统每隔16ms发出更新信号,触发对UI进行渲染 ,如果某个操作耗费时间超过16ms,就会出现阻塞主线程, 没法绘制,就会发生丢帧现象.(注:FPS(帧率) , 每秒显示的帧数 , 表示图形处理器每秒钟能够更新的次数, 越高越流畅)

通常情况下,在16ms我们的应用做了什么工作,哪些工作阻止了我们在16ms时更新界面

以xml布局被绘制出来为列说明:

  1. CPU负责把UI组件计算成多边形和纹理 
  2. OpenGl负责绘制图像
  3.  GPU负责栅格化需要显示内容并渲染到屏幕上

系统提供工具Profile GPU Rendering(GPU呈现模式分析) ,排查哪些工作占用了多长时间工具

优化方案 : 界面卡顿优化

 

   2.网络优化

           在保证功能不变的情况下,消耗最小的用户流量,另外由于网络通信模块是好点大户 , 所以优化时会兼顾电量消耗

常见的优化方案

  • 通信数据优化 , 是指对客户端和服务端传输数据的优化,优化数据结构和减小数据长度
  • 批处理请求 ,是指将多个请求放在一起执行, 也就是将不必要的数据传输先缓存 , 等到一定时间一起传输
  • 网络状态管理预取数据 , 根据网络状态,将一些不需要实时发送的请求, 放在wifi状态下发送,在wifi时 可以去预去数据

排查工具: wireshark

 

   3.内存优化

             

 

 

 

 

你可能感兴趣的:(android)