一般来说,我们会从以下几个方面来谈性能优化:App启动速度优化UI流畅度优化内存优化apk瘦身功耗优化和部分网速优化,以及针对特定类型的一些针对性优化App,比如播放器的播放速度等等……在这篇文章中,我们主要关注以上五个方面。性能优化的正常过程是发现自己和竞品在某些方面有很大的差距,比如UI渲染速度。您需要以某种方式找出为什么它比其他人慢。经常需要用到一些工具,然后可以做一些有针对性的调优。(代码优化,实现变更等),当然会有一些通用的调优方法可以在调优过程中帮助到你。因此,本文从共性的角度,主要介绍以上五个方面的检测工具和调优方法。1.App启动速度优化对于App启动速度优化,一般情况下我们会使用主题来防止白屏;对于启动速度慢的,需要尽量减少Application的onCreate中要做的事情,比如一些不重要的SDK延迟或者异步加载;在多进程的情况下,必须能够在onCreate中区分进程,并做一些初始化工作;一些要使用的类是异步加载的;还有针对multidex的特殊优化(当然这个在5.0以上的设备上会越来越多,影响没那么大)。当然,在检测和启动优化方面,除了使用adb命令检测总时间,还有一个耗时的方法可以找,可以使用TraceView,或者开启StrictMode,如果你喜欢用日志,也可以用hugo,或者自己写一个类似AOP的日志框架。StrictMode比较简单,就不描述了。hugo是Jake的一个开源库,主要使用aspectJ。源码很小,比较简单,但是用起来还不错。直接看readme就可以了。2.UI流畅度优化涉及到UI流畅度,一般不在主进程做耗时操作,提高UI绘制速度(降低View的布局层级,避免过渡绘制等)...TraceView,Lint、Hugo、StrictMode等等……当然,对于UI卡顿,难免要引入检测方案:一般都有监控Looper的日志。3、内存优化内存优化主要是消除应用程序中的内存泄漏,避免内存抖动;常用的工具是AS自带的内存检测,可以很好的检测内存抖动;leakcanary可以很方便的帮助我们发现内存泄漏;MAT可以做更多的内存分析。4.Apk瘦身关于Apk瘦身,主要有以下几种方法:使用ProGuard压缩代码去掉无用资源,resguard进一步压缩混淆资源瘦身第三方开源库,只保留你需要的部分***图片压缩和webp使用合理的配置去掉不必要的配置,只保留中文配置等...so优化配置,只保留一种so动态发送一些资源:字体,so,换肤包等;只有上面7个比较麻烦,需要服务器配合。另外,So的动态传递,可以参考Tinker的So热修复代码。5.电池优化电池优化受到的关注相对较少。总的来说就是合理使用一些传感器,谨慎使用WakeLock,减少后台不必要的操作等。可以使用battery-historian进行检测,可以记录每个方案实际采用的优化策略,必须亲自体验每个方法中提到的工具。绝对不会难用,实践起来印象会更深刻。性能优化并不难,最重要的是实际操作,这基本是面试中的常见问题。***,好多好文章,希望这篇文章只是一个介绍,感谢各位作者~让我想起2016年明云集在MDCC上的性能优化分享,所以每次说起性能优化,我会想起当年演讲的ppt。对了,腾讯在手机上有一个非常强大的“综合调试环境”,就是手机上可以用来进行性能测试的软件,叫做GT。
