如何分析app性能指标
app耗电的可能原因:
频繁的交互
正常情况下,关闭后台软件,在玩王者荣耀游戏和听音乐的时候手机耗电一定是差别很大的,因为玩游戏的时候会和屏幕产生很多的交互,但是听音乐就不会这样,频繁的交互式非常耗电的,
动画效果
当我们设计交互动画的效果时,调用的都是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使用不当导致没有及时的释放
虽然我们很清楚耗电的原因,但是我们还是做不好,涉及的因素方方面面,我们无法改变重构底层代码、无法优化整个系统、技术瓶颈、不得不定时发送心跳包…但是作为一名产品经理我们能够做到是尽量减少交互、改善产品交互逻辑、优化动画效果、简化布局…其实我们能够做的还很多。

浙公网安备 33010602011771号