Android Note - 电量优化

我们注意到,现在但凡每个手机厂商开新品发布会,关于电量的内容永远是占了重要的篇幅。现在的智能手机虽然性能远非早前功能机时代的手机可比,但是电量损耗反而好像是越来越大了?这有点 “日益增长的使用需要和不平衡不充分的电池电量技术发展之间的矛盾” 一样的感觉,是一个用户非常关注的问题。
在硬件上,我们作为软件开发者可能是爱莫能助;但是在应用层面上来说,我们能做的事情很多。下面就简单讲一下开发时要注意的一些地方。


耗电场景

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

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

耗电优化

知道了耗电场景,那我们就可以有针对性地对这些场景进行优化了。

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

  2. 如果可以的话,监听手机充电状态,并在充电时才执行一些非常耗电的操作,比如下载文件,备份信息,上传日志等。

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

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

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

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


总结

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文由作者张迎贞授权网易云社区发布。 APP性能测试除了需要监控PCU、内存占用、流量等,还需要获取APP的电量数...
    43ce3d72fadb阅读 826评论 0 0
  • 偶尔片刻的宁静,都要把昔日的时光翻阅 月色沉在河水里还不曾上岸 把自己的经历做成象梦一样的篇章 托付给水中的月光 ...
    泰安左眼皮跳跳阅读 221评论 1 7
  • 日本鬼子侵华战争期间,在海拉尔犯下累累罪行,其中现存铁证之一就是当年鬼子修筑的地下工事。 后世不忘,前世之失! 祈...
    远水生方阅读 409评论 0 1
  • 炽白的灯打在眼上, ——难受 颅骨里什么东西在晃, ——不敢动 抽搐成一团一直不能动弹。 昨天的酒精味太恶心人, ...
    大榕树上阅读 339评论 4 2
  • 早早睡去,半夜又醒来,又有些睡不着,又做梦了,梦醒后依然还有印象。这次梦是有关父亲的,梦里到处跑来跑去,到处奔波,...
    goldfish2017阅读 144评论 0 0