App耗电分析与优化

6 评论 7872 浏览 37 收藏 8 分钟

文章作者结合自身经验分享了关于APP耗电优化的相关知识,希望能够给你带来帮助。

虽然市面上出现了各种大容量的电池或者快充技术,但是目前在没有新材料的支撑下,都不可能完全解决app耗电这个难题,作为产品经理在设计产品的时候无论是否考虑耗电这个因素,用户对某一个app耗电的多少其实是不容易感知的,即便是这样,也希望大家能够了解app耗电和优化的一些基础知识,在移动互联网时代下,这或多或少对于用户来说都是有益的。

1.关于手机耗电

先来说一说手机耗电,一般来讲,手机耗电分为以下五个因素:

  • 电池本身:电池的材料、密度等。
  • 硬件配置:屏幕、处理器、数据处理等等。
  • 操作系统:无论是原生还是定制化的操作系统,都会对耗电有极大影响。
  • 应用软件:本文要说的。
  • 其他:充电次数、外界温度等等。

我们可以使用专业的测试手机电流的软件测试手机的电流,这样是非常精确的,或者下载三方app,最简单是在手机设置的电量管理中观察不同app消耗的电量多少。

2.应用软件耗电

了解这块之前要知道CPU为什么会耗电?CPU在运行复杂度不同的任务是采用调频处理的,当手机处理复杂任务时,频率也会提高,自然对于电量的需求会增加。另外,当APP进程的CPU使用率超过1%的时候,都是耗电比较大的。应用软件为什么会耗电?又是通过什么途径来耗电的?总结起来大概有以下几点:

频繁的交互

正常情况下,关闭后台软件,在玩王者荣耀游戏和听音乐的时候手机耗电一定是差别很大的,因为玩游戏的时候会和屏幕产生很多的交互,但是听音乐就不会这样,频繁的交互式非常耗电的,

动画效果

当我们设计交互动画的效果时,调用的都是view或者其子类,比如按钮在点击前是效果1,点击后变成效果2,设置更复杂的动画,此时view的重绘让CPU或GPU不断计算,耗电量同样会增加。

布局文件嵌套太多

直接地说,app的布局文件影响着app展示给用户的效果,当布局过于复杂,布局文件嵌套太多时,布局xml文件越来越繁多,查找、加载这些文件显示时会造成CPU计算加重,也会影响手机耗电。

数据库,SD卡操作频繁

安卓时基于轻量级数据库sqllite,关系型数据库的特征就是会有复杂的数据表关系,频繁地调用数据库查询语句会加重系统的负担,同样的也会耗电,甚至会影响整体的性能。

定时任务唤醒CPU

安卓CPU休眠时一种安卓极致省电的一种模式,如果你息屏一段时间,CPU会自动进入休眠,但是唤醒CPU和亮屏不是一个概念,有这样一个过程,当某个应用唤醒CPU,给你推送了某条通知,当你亮屏打开手机后会看到这条通知,那么它就是唤醒了手机的CPU,而我们知道CPU工作时需要电量了,尤其是在频繁唤醒的情况下,或者发送心跳包。

频繁切换网络造成

切换网络往往需要硬件的支持,硬件需要跑起来也是需要电量的,并且数据网络比wifi更加耗电,2G,3G,4G网络耗电都不同。

高运算量代码

比如解析json这类耗时时间较长的数据格式,或二进制编码解码等。
除了上述几个原因之外,后台常驻service、任务堆积的队列太多,导致循环执行太多(log日志的保存)Wake Lock使用不当导致没有及时的释放等都会加重安卓手机的耗电。

3.应该怎么做?

减少应用与屏幕的交互

比如长时间让应用动态地翻滚显示不同的页面,当然除此之外还包括用户和屏幕的交互,在设计app的时候适当简化用户的操作流程,简化掉可以帮助用户做的,不仅仅是为了省电,也可以提高用户的效率。

减少不必要的动画效果

有些复杂的动画效果完全可以省略,采用静态的app启动页,或者是点击事件的交互、页面跳转时就用尽量减少不必要的动画效果。

简化布局文件,避免过多的嵌套

在设计app时,在某一页上应该尽量简化布局,例如三星S8负一屏,用卡片方式呈现,布局就很简洁

减少数据库,SD卡操作

在做搜索功能时,要特别注意,搜索文件、联系人、短信、通话记录这些都是要进行数据库或者SD卡操作的,一方面我们要设计合理的数据表,另一方面也要尽量减少这类的搜索,能避免使用时就不用。

非必要不要使用定时任务

基于定时任务的意义,大部分的定时任务都不容易取消。

除了产品经理可以做这些,程序开发者能够做的有以下几点:

  • 非必要必要监听网络广播
  • 减少非必要log的保存,log开关的设置
  • 减少json数据解析,二进制编码解码等高运算量代码
  • 非必要不要使用后台常驻service
  • Wake Lock使用不当导致没有及时的释放

虽然我们很清楚耗电的原因,但是我们还是做不好,涉及的因素方方面面,我们无法改变重构底层代码、无法优化整个系统、技术瓶颈、不得不定时发送心跳包…但是作为一名产品经理我们能够做到是尽量减少交互、改善产品交互逻辑、优化动画效果、简化布局…其实我们能够做的还很多。

 

本文由 @虚伪的温柔 原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 直接评论,国内毒瘤把互相唤醒的勾当去了,万事大吉

    来自浙江 回复
  2. 确实是这样,要是碰到容易发热的CPU,不仅耗电还发热,不过从我使用这么多手机来看,软件耗电真的是影响不太大,主要还是硬件CPU、屏幕、电池,还有就是系统了,纯APP层面影响很小。毕竟除了微信qq之外很少会有人会不停地长时间使用同一个应用。另外感觉CPU真的太重要了,从821到835,这续航和发热控制提升的我都不适应了。屏幕的话,说真的还没用过2K屏的手机,就不太知道了。系统现在各家都差不多,如果有耗电的版本,都会升级优化,没太大问题。

    来自广东 回复
  3. 一看就是以安卓为样本的分析。

    回复
    1. 没错

      来自浙江 回复
    2. 666

      来自湖北 回复