1.概述
一个应用性能的好坏并不能依靠我们的主观意识去评判,必须要看数据说话,因此必须要了解和学会使用各种性能测试工具才知道问题出在哪以及具体的优化方向。2.标准
• 布局复杂度: 布局复杂会导致布局需要更长的时间,从而导致进入应用慢、页面切换慢;
• 耗电量: 耗电量大会导致机器发热、缩短机器的有效使用时长;
• 内存: 内存消耗大会导致频繁GC,GC时会暂停其它工作,导致页面卡顿;内存泄露会导致剩余可用内存越来越小;内存不足会导致应用异常;
• 网络: 频繁的网络访问会导致耗电和影响应用的性能;网络交互数据大小会影响网络传输的效率;
• 程序执行效率: 糟糕的代码会严重影响程序的运行效率,UI线程过多的任务会阻塞应用的正常运行,长时间持有某个对象会导致潜在的内存泄露,频繁的IO操作、网络操作而不用缓存会严重影响程序的运行效率。3.具体工具的使用
https://developer.android.com/studio/profile/android-monitor.html
内存监控器Memory Monitor- 1)实时查看App的内存分配情况
- 2)快速判断App是否由于GC操作造成卡顿
- 3)快速判断App的Crash是否是因为超出了内存
- 4)使用说明:横坐标记录从采集开始点到目前已经过去的时间,纵坐标是分配给App使用的内存总量[Allocated+Free],蓝色区域表示已分配[Allocated]使用的的,灰色区域表示空闲[Free]未使用的。在坐标轴的右边可以看见具体数值。
- 5)GC就是垃圾回收的意思,我们可以从Memory monitor看到何时发生了GC event,当一个内存短时间内发生掉落,我们可以认为发生了GC操作。你也可以手动触发GC,下图中的小车子就是触发GC的按钮,一旦按下就会回收那些没被引用的对象(这个地方不能说没用的对象,因为没用的对象有可能是内存泄漏时的对象,后期会来研究)
- 6)Memory Monitor工具为监控工具,是一种发现型或者说监控性质的工具,比如医生的四大技能[望闻问切],[望]是第一步。这里的Memory Monitor就是一种[望]的工具,目前我主要用它来看下面几个内存问题:
- 6.1)发现内存抖动的场景
- 6.2)发现大内存对象分配的场景
- 6.3)发现内存不断增长的场景
- 6.4)确定卡顿问题是否因为执行了GC操作
发现:只有从产品页跳转过来的时候,app内存消耗陡增
https://testerhome.com/topics/3402
- 4.性能优化
- 1)请求的次数做了限制
- 2)只加载一个页面
参考:
http://hukai.me/android-performance-patterns/
http://www.jianshu.com/p/4fbd6bb74762
https://zhuanlan.zhihu.com/p/20416881
https://www.zhihu.com/question/39717451
https://www.zhihu.com/question/41250052
https://www.zhihu.com/question/29488613
https://testerhome.com/topics/3457
https://testerhome.com/topics/2698
https://testerhome.com/DoctorQ
http://hukai.me/android-performance-memory/
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0611/3033.html
http://hukai.me/android-performance-patterns/
https://developer.android.com/studio/profile/android-monitor.html