(图片来源网络,侵删)
文章作者结合自身经验分享了关于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数据解析,二进制编码解码等高运算量代码非必要不要使用后台常驻serviceWake Lock使用不当导致没有及时的释放虽然我们很清楚耗电的原因,但是我们还是做不好,涉及的因素方方面面,我们无法改变重构底层代码、无法优化整个系统、技术瓶颈、不得不定时发送心跳包…但是作为一名产品经理我们能够做到是尽量减少交互、改善产品交互逻辑、优化动画效果、简化布局…其实我们能够做的还很多。本文由 @虚伪的温柔 原创发布于人人都是产品经理。未经许可,禁止转载。题图来自unsplash,基于CC0协议
0 评论