老罗的《Android系统源代码情景分析》翻了10遍还看不懂?因为你用错了

1,956 阅读4分钟
原文链接: blog.csdn.net

在这里插入图片描述 最近老朽又把罗升阳老师的《Android系统源代码情景分析》拿出来啃了一番。

为什么要加个“又”呢?因为从老罗的第一版开始到迄今为止尚未更新的第三版为止,每年有学习冲动的时候便默默地从电子书里把这本书翻出来。那既然老朽已经读了这么多遍,理论上应该对书中的内容了然于胸了啊,怎么能说“啃”呢?

因为啊,每次看完某个章节后再回顾知识点的时候,总感觉大脑被各种源码级调用搞得一团乱麻,等隔个半年再去看的时候,咦〜,这个点好像压根儿没看过嘛!所以老罗的这本书似乎有一个神奇的功效,那就是让很多人读了很多遍都觉得它是本新书。

别笑,同是菜鸟的你也应该和老朽一样曾被老罗折虐得体无完肤吧。
在这里插入图片描述
这里倒不是说老罗的书写得不好,而是它的门槛至少有三层楼那么高,这对还在地下室的下水道趴着的我们来说,无异于看天书。
在这里插入图片描述
当然,你要是像Andy Rubin等人一样早已高居十八层当老朽没说。

为什么说老罗的书门槛很高呢?从书名便略知一二,“系统源码情景分析”这几个字就说明了书中的内容相当于给源码作注,所以这本书压根儿就是《老罗带你看系统源码》,而对一个功力尚浅没有三五年开发经验和Linux底子的普通人来说,短时间内吃透系统源码是不现实的。就好像你慧根不够,即使把《金刚经》的梵文翻译成大白话文讲给你听你也同样看不懂一样,所以从理解难度来讲,《Android系统源代码情景分析》也只比自己READ THE FUCKING SOURCE CODE简单些。
在这里插入图片描述
所以对待老罗的情景分析,应该和对待源码的态度一样,那就是需要弄懂某个知识点的时候再去查,而不是跟着书中的步骤一步步地往下看,因为你很容易就陷入“一叶障目”的窘境,接着便在代码和各种不明就里的术语构成的汪洋里不能自拔,接着便想快速合上书或者无意识地想尽快把章节翻完,此时我相信你的大脑早已一遍空白,留下的只是对老罗的高山仰止。
在这里插入图片描述
下面结合自己的例子和大家分享下阅读情景分析正确姿势。比如准备看第13章“安卓应用程序消息处理机制”的时候,你应该去其他参考书比如《android开发艺术探索》和《深入理解android内核设计思想》了解个大概,知道整个机制涉及到哪些类,比如WMS、InputManager、InputReader、InputDispatcher、InputChannel以及native层的一些类,然后可以看看《android内核剖析》,这样你对整体的消息处理就有个系统的了解了。但是,如果你想深层次地了解,比如EventHub是如何监听键盘事件并唤醒InputDispatcher的话,这时候你就可以去看看老罗写的,相信你不会失望的。

当然了,如果你压根不知道消息机制是什么,可以从《第一行代码》看起。所以,从学习深入层次来讲,了解是第一层,熟悉的第二层,知其所以然才是第三层,如果你不想知其所以然,我觉得完全没有必要看老罗的书。反过来,如果想在以后的工作中以不变应万变的话,不看情景分析简直是暴殄天物。

需要注意的是,强烈建议大家不要和老朽一样买电子书(最近想趁当当满100减50买纸质书的时候竟然缺货),因为电子文档翻阅前面章节的时候严重不方便,遇到类似“我们在12.4.5里提到”这类词汇时真的很受伤。
在这里插入图片描述
最后还是想给三年以上的安卓开发者们一些建议,如果打算在安卓技术这块深入学习的话,系统源码这块是绕不开的,不管你是framework层开发还是应用层开发,也无论你是为了面试还是写出更高质量的代码,都应该下狠心把系统源码通读一遍,而对于很多像老朽一样非计算机科班出身的人来说,老罗的情景分析简直是雪中送炭,如果我们把书中的什么管道、内存映射以及epoll等与Linux内核等息息相关的概念在延伸吃透的话,相信你很快就能赶郭超罗。