Android 性能优化问题方案的总结~
Posted 涂程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 性能优化问题方案的总结~相关的知识,希望对你有一定的参考价值。
在android开发这个行业想进入大厂,有好的学历可能有优势一些(软实力)。
如果搞硬实力(技术技能)去拼也是有机会的,例如专攻性能优化方面,成为这方面的高手,因为所有 APP 开发都离不开优化这个重要的环节,而且也是目前招聘过程中比较稀缺的人才。
为什么性能优化是开发中最重要的一部分?
因为每个开发者开发出的产品都不能肯定一次就可以做到最优,所以在产品在上线前就需要不断的测试和优化,等到产品上线时要避免一些闪退、卡顿等情况BUG的出现。用户在使用产品过程的中,优秀的交互体验是我们留住用户不可或缺的一部分,面试中面试官也会以性能优化这方面的技术点和你掰头。
像近几年的面试问的也越来越深入,比如以下问题:
1. 在之前的项目中做过哪些性能优化,取得过哪些收益?
2. 对于App启动时间这块,有什么心得?如何从线程、系统层面出发优化启动速度?
3. 对于内存优化,你觉得需要做哪些事情?Java/Native 内存泄漏如何检测与处理?
4. 流畅性这块,你们 App 的关注的指标是?这块有什么经验?你觉得造成页面卡顿最主要的原因是?有什么通用性的优化方案?
性能优化始终穿插在 App 整个研发生命周期中,不管是从 0 到 1 的建立阶段,还是从 1 到 N 打磨阶段,都离不开性能优化。
当然大多数开发者更多的还是在做业务开发,对于性能优化基本停留在"听说过"或者"简单使用工具"的阶段,其中不乏一些工作多年的 Android 工程师。
当然如果想要精进,不仅要知道如何利用工具做性能优化,还要对底层原理充分了解,对 Linux 底层相关知识也要充分了解,例如你从线程角度做启动优化,你需要了解在 Linux 层线程的 nice 值,线程优先级对调度的影响等…
这样才能够精通某一个领域的性能优化。
精通意味着:
1. 首先在大厂面试环节,性能优化基本是必问项,你可以展示出个人实力;
2. 一旦你进入大厂,对性能优化了解越多,你能够做的事情就越多,产出也会越多,而且可以持续不断去做。
当然,在一些面试中,也会看到一些朋友写“精通性能优化”,但是让其描述,往往就是一些自己编写的业务,一些去除页面多余嵌套、使用线程池、ViewStub 这些非常浅的方案。
其实更多的,我们还是希望能够听到,线上复杂环境,低端机/弱网等因素下,用户触发的一系列的体验问题。
想要搞清楚这些,那么必须对各种底层原理有着深度了解,对各种 case非常丰富的经验;很多朋友经常遇到措手不及的问题,大多是因为对出现问题的情况和处理思路模糊不清,导致此原因出现的原因 ,就是因为没有彻底搞懂底层原理。
比如下面这张 Android启动流程图,不少人都看过,但少有人沉下心去仔仔细细研究过。
如果大家需要完整版,请去我 GitHub 中查阅,希望这些干货能够帮助到大家!!!
GitHub地址:
https://github.com/733gh/Android-T3
作为过来人,发现很多学习者和实践者都在 Android 性能优化上面临着很多的困扰,比如:
-
工作场景中遇到“性能优化”难题,往往只能靠盲猜和感觉,用临时性的补救措施去掩盖,看似解决了问题,但下次同样的问题又会发作,原因则是缺乏方法论、思路的指引以及工具支持;
-
能力修炼中,缺乏互联网项目这一实践环境,对“性能优化”只能通过理论知识进行想象,无法认识其在工作实战中的真实面目和实操过程;
-
职场晋升中,只管功能开发,不了解组件设计原理,缺少深入地思考与总结,无法完成高并发、高性能系统设计这类高阶工作,难以在工作中大展拳脚,而有挑战的工作往往留给有准备的人。
总之,一旦遇到“性能优化”问题,很少人能够由点及面逆向分析,最终找到瓶颈点和优化方法,而性能优化是软件工程的深水区,也是衡量一个程序员能力高低的标准。
如果你还没有掌握这套主流技术,不妨来看看下面这张系统的Android 性能优化思维导图,里面包括布局优化、绘制优化、内存泄露优化、响应速度优化、ListView优化、Bitmap优化、线程优化等技术知识点。
该图太大可能导致图片清晰度下降,如需要完整版的可以去我 Github 进行访问查阅。
GitHub地址:
https://github.com/733gh/Android-T3
针对上面的思维导图里面的知识点,我还对应的整理相关的学习文档,分享给大家进行参考学习。
如果大家需要请去我 GitHub 中查阅,希望这些干货能够帮助到大家!!!
GitHub地址:
https://github.com/733gh/Android-T3
以上是关于Android 性能优化问题方案的总结~的主要内容,如果未能解决你的问题,请参考以下文章