很多读者,尤其是初学者特别抗拒去看源码,这里我说明一下为什么要进行源码分析。其中包括下面一些好处:
-
学习Android源码有助于我们学习其中的设计模式、思想、架构。
-
熟悉整个源码的架构,有助于我们更加正确地调用 Android 提供的 SDK,写出高效正确的代码。
-
学习源码有助于我们面试,因为大公司都喜欢问这些。
-
学习源码有助于我们学习一些黑科技,比如学习插件化的从时候我们需要学习 Hook 机制,但是学习Hook机制的时候我们需要掌握Activity的启动流程、消息机制等等机制。
我个人觉得,只懂得去调用 API,跟掌握API底层的实现,这是一个码农跟高级工程师的区别。只会用API每天只能做很多重复性的工作,但是学习了源码以后,我们能够做到很多原生API做不到的事情,这就是我们所说的黑科技,这样能够让我们的知识面更加广泛,因为,即使一个人天资再好也罢,如果他的见识面不够广泛,很多东西(比如说热更新、插件化、NDK)没有接触过的话,永远只能停留在他所到达的瓶颈上面。对于像本人一样在做系统 APP、系统 Framework 层开发和定制来说源码可能比较重要,但是这并不意味着做第三方 APP的时候就不重要。当然,学习源码需要有一定的耐心,也可能需要你在分析的过程中去画一些图(图片更加直观)、花额外的时间去学习源码用到的设计模式等等,学习源码是一个比较痛苦的事情,因为你会发现掌握了源码并不意味者你就能够一步登天。但是随着亲们慢慢地掌握了整个Android的系统架构的时候,相信你不会后悔当初自己的付出。因为我一直都相信,付出必定会有所收获。
这里扯个题外话