App耗电分析与优化
文章作者结合自身经验分享了关于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使用不当导致没有及时的释放
虽然我们很清楚耗电的原因,但是我们还是做不好,涉及的因素方方面面,我们无法改变重构底层代码、无法优化整个系统、技术瓶颈、不得不定时发送心跳包…但是作为一名产品经理我们能够做到是尽量减少交互、改善产品交互逻辑、优化动画效果、简化布局…其实我们能够做的还很多。
作者 @虚伪的温柔 。
关键字:圈子, APP耗, 产品优化
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!