Android Note - 电量优化

咱们注意到,如今但凡每一个手机厂商开新品发布会,关于电量的内容永远是占了重要的篇幅。如今的智能手机虽然性能远非早前功能机时代的手机可比,可是电量损耗反而好像是愈来愈大了?这有点 “日益增加的使用须要和不平衡不充分的电池电量技术发展之间的矛盾” 同样的感受,是一个用户很是关注的问题。性能优化

在硬件上,咱们做为软件开发者多是心有余而力不足;可是在应用层面上来讲,咱们能作的事情不少。下面就简单讲一下开发时要注意的一些地方。网络


耗电场景

具体到开发中,咱们会碰到的耗电场景主要有下面一些场景。ide

  1. 屏幕点亮,组件开始工做,界面开始渲染流程。由于唤醒屏幕让屏幕亮起自己会消耗大量的电能。
  2. 使用蜂窝数据。这一块耗电是由于手机是经过 “射频” 模块与外界通讯的,而这个模块也是手机中消耗电能的大户。
  3. 使用高精度的位置信息。这个也是电量消耗的大头了,早几年系统底层优化不够完善的时候,使用 GPS 一下子手机甚至会发热发烫。

耗电优化

知道了耗电场景,那咱们就能够有针对性地对这些场景进行优化了。性能

  1. 屏幕的渲染及CPU的长时间运行是耗电的主要因素,在作内存优化、渲染优化、代码优化的时候,也能帮助应用进行电量优化,这都是相辅相成的。优化

  2. 若是能够的话,监听手机充电状态,并在充电时才执行一些很是耗电的操做,好比下载文件,备份信息,上传日志等。编码

  3. 是否保持屏幕常亮要依据场景来决定,好比地图,阅读类的应用;最好给用户一个能够选择是否须要屏幕常亮的选项。日志

  4. GPS 选用合适的 Location Provider,并及时注销定位监听。有 GPS_PROVIDER,经过 GPS 来获取地理位置的经纬度信息;以及 NETWORK_PROVIDER,经过移动网络的基站或者 Wi-Fi 来获取地理位置;其中的区别就不细说了。内存

  5. 网络优化,判断当前网络情况,若是无网络,则不发送网络请求,避免太多超时重试;若是是蜂窝数据,则下降请求频率,减小重连次数;若是有长链接,记得关掉。开发

  6. 使用JobScheduler执行后台做业。JobSchedule的宗旨就是把一些不是特别紧急的任务放到更合适的时机批量处理。这样作有两个好处:一是避免频繁的唤醒硬件模块,形成没必要要的电量消耗;二是避免在不合适的时间(例如低电量状况下、弱网络或者移动网络状况下的)执行过多的任务消耗电量。io


总结

其实电量优化这一块的内容,每每也是咱们在作其余性能优化时要注意的东西,这就要求咱们在写代码时,更加深刻地看待问题的实质,并始终保持一个良好的编码习惯。这样咱们就能在应用层面,给用户带来更好的体验。

相关文章
相关标签/搜索