0%

Android性能优化-电量优化

前言

如果应用耗电量过大,就会消耗用户手机过多的电量,甚至发热,现在一般手机都会有耗电量过大的提醒,当用户看到后,也可能会把你的应用卸载掉,因此需要对其进行优化,让应用的耗电量尽可能小。

检测工具

Battery Historian:https://github.com/google/battery-historian

可以按照官方说明文档搭建Battery Historian运行环境,然后检测查看自己应用的耗电量数据。

优化方法

  • 网络连接

    首先基于耗电情况,移动网络连接分为三种状态:

    • Full power:最高速率传输数据状态,这种情况耗电最高。

    • Low power:传输速率下降状态,耗电量也是Full power的一半。

    • Standby:没有传输数据的状态,耗电量最少。

      另外,状态间的转换,会有一些延迟,比如说Full power数据传输结束后,不会马上转到Low power,而是会等待5s。整个流程可以参考下面的示意图:

      image

      也就是说,传输数据时应该尽量一次性传完,而不是一次传一点,传很多次,这样会导致处于Full power状态的时间变长,耗电量也就增大。

    • 网络连接优化一:数据尽量一次性打包传输,具体到应用场景,比如阅读新闻,应该采用预加载一次性拉取前几条新闻的数据,在线视频播放,在线音乐播放也是类似。*

    • 网络连接优化二:使用连接池缓存连接,因为连接的建立会消耗更多的资源和电量。*

    • 网络连接优化三:长连接心跳包的发生频率也需要限制,或者考虑采用半长连接的方式。*

    • 网络连接优化四:避免下载没必要的数据,或者说减少数据传输时间,比如说图片可以下载压缩版的,请求结果的数据压缩后返回给客户端,本地缓存云端数据等*

    • 网络连接优化五:先检测网络状态和网络类型,因为弱网络和移动网络的传输数据一般比较长,耗电也就会更多,当然速度快的4G或5G移动网络除外。*

  • GPS

    定位是比较耗电的,不能频繁进行定位,特别是后台定位。这里优化的方法有:

    GPS定位优化一:对于及时性要求不高的场景,可以避免一直监听GPS,获取到GPS信息后,移除监听,设置闹钟触发下次监听。

    GPS定位优化二:及时移除GPS监听器。

    GPS定位优化三:GPS监听器更新间隔时间设置长一些。

    GPS定位优化四:对于精确性要求不高的场景,比如城市定位,可以改为用网络定位。

    GPS定位优化五:复用GPS定位信息,特别是对多模块的App,应该统一管理GPS信息。

  • 其它传感器

    同样需要注意使用频率,更新间隔,监听器反注册等问题。

  • 唤醒

    减少屏幕唤醒次数,设备唤醒次数,少用AlarmManager和WakeLock。关于WakeLock可以参考文章:安卓电量优化之WakeLock锁机制全面解析

  • 其它优化

    优化一:耗时操作等到手机在充电时进行,比如备份数据,扫描识别照片等。

    优化二:App位于后台时尽量少执行任务,特别是后台常驻服务,任务应延迟到应用位于前台执行,避免了后台耗电,频繁唤醒设备等。

参考资料

Android电量管理