5秒到1秒,用户体验才是王道,Android性能优化详解
如果你工作了2 - 5 年以上开发经验还不懂得怎么去优化自己的项目,那可真的说不过去了,市面上各种App横空出世,谁能获得用户的青睐,谁就能在互联网浪潮里取得一席之地。
为什么性能优化对开发人员如此重要?
用户在使用应用过程的中,优秀的交互体验是我们留住用户不可或缺的一部分,所以不仅在面试中面试官会以此和你掰头,而且在工作中领导也会因为加载速度慢来敲打你学(打)习(工),那么性能优化,如果判断到底需不需要做,如果需要做又怎么去做或者说怎么去找到优化的切入点?
接下来让我们一起来探索性能优化(emo~
从这张多线程的导图中(太大,不清晰可在下文查看Xmind原件huoqu方式)我们可以看出:想要彻底搞懂性能优化是需要掌握很多技术点的。
Android性能优化主要包括布局优化、绘制优化、内存泄露优化、响应速度优化、ListView优化、Bitmap优化、线程优化以及一些优化建议
实际上每个面都可以扩展很多,需要在实际中多去运用
布局优化
-
减少布局文件的层级(测量/布局/绘制的时间减少):可以使用来减少嵌套,RelativeLayout从而达到减少层级的目的,另外在相同层级的情况下使LinearLayout(相比于RelativeLayout更高效)
-
使用
include
标签复用,merge
标签降低层级,ViewStub
来实现懒加载,另外补充一个Space
可以用来占位
绘制优化(onDraw)
主要是避免执行大量的操作
-
不要创建新的局部对象,因为onDraw可能会被频繁调用,会在一瞬间产生大量的临时对象,会导致占用过多内存,系统更加频繁的gc,降低执行效率
-
不要做耗时的任务
内存泄露优化
其实内存泄露有很多种情况,但是书中列举的比较少
-
静态变量导致的内存泄露(比如静态的context,静态的view)
-
单例模式持有Activity
-
属性动画(repeatCount为无限模式)
线程优化
主要是采用线程池,避免存在大量的Thread
-
重用Thread,避免线程创建和销毁所带来的开销
-
线程池还能控制最大并发数,避免大量线程因互相抢占系统资源从而导致阻塞
前段时间整理收集的关于Android性能优化的知识脑图总结和学习手册文档!既能够夯实底层原理、性能调优等核心技术点,又能够掌握普通开发者,难以触及的架构设计方法论。那你在工作中、团队里、面试时,也就拥有了同行难以复制的核心竞争力。下方链接获取
Android性能分析与优化实战进阶手册
Android性能分析与优化实战进阶手册目录及内容展示
第一章:Android性能优化概述
第二章:卡顿优化
第三章:启动速度优化
第四章:内存优化
第五章:布局优化
第六章:线程优化
第七章:电量优化
第八章:稳定性优化
总结
作为过来人,我发现很多学习者和实践者都在 Android 性能优化上面临着很多的困扰,比如:
- 工作场景中遇到“性能优化”难题,往往只能靠盲猜和感觉, 用临时性的补救措施去掩盖,看似解决了问题,但下次同样的问题又会发作,原因则是缺乏方法论、思路的指引,以及工具支持;
- 能力修炼中,缺乏互联网项目这一实践环境,对“性能优化”只能通过理论知识进行想象,无法认识其在工作实战中的真实面目和实操过程;
- 职场晋升中,只管功能开发,不了解组件设计原理,缺少深入地思考与总结,无法完成高并发、高性能系统设计这类高阶工作,难以在工作中大展拳脚,而有挑战的工作往往留给有准备的人。
总之,一旦遇到“性能优化”问题,很少人能够由点及面逆向分析,最终找到瓶颈点和优化方法,而性能优化是软件工程的深水区,也是衡量一个程序员能力高低的标准。 如果你还没有掌握这套主流技术,现在想要在最短的时间里吃透它,需要完整版的朋友可点击下方链接: