Android 程序猿如何继续深入的研究技术层的知识?请教各位前辈指条明路

背景:个人自学Android开发,目前从事Android开发工作,独立完成过一个App 十万行代码左右 现在在想要更加深入的学习些东西,但是不知道从何处着手,目前的能力是,了解大部分官方文档中Android 开发中的技术,能够根据客户需求搭配出合理的技术组合(但是部分技术并不熟,开发时可查阅资料独自完成 PS:不是纯拷贝前人代码),了解Android开发的流程,但是因为小公司,目前尚无完整的测试流程。平常喜欢在GitHub上看看源码,看…
关注者
1344
被浏览
25101
10W行代码,9W行xml吗?

好吧说正事儿。你这种状态叫做浮躁,我曾经也和题主一样,感觉学的很散,好像什么都会一点,但是又不够深入,整天都是心慌慌。其实这算是到达瓶颈期了,潜下心来闭关修炼,一旦突破肯定能到达一个新的高度。前辈称不上,我分享一下我是怎么做的吧。

我当时就是觉得自己做什么业务都没有问题,能够选用合理的技术,也能写出相对优雅的代码;能把玩python, rails, node, haskell 等一堆东西,但是总觉得缺点什么,之所以这样,是因为我浮游于表面,总有一种盲人摸象的感觉,知道怎么做,但是不知道原理;俗话说,万变不离其宗;所以,我决定深入底层,打通任督二脉。具体来说,我给自己定了四个目标:

1. 深入Android系统
2. 深入Java
3. 了解编译原理等CS基本知识
4. 深入Linux内核

深入Android系统

这一块有很多人分享过经验,其实无非那么几点,我就简单重申一下吧。
1. IPC机制,Binder和匿名共享内存等
2. 四大组件启动,工作原理
3. View系统,绘制原理,事件分发
4. 动画框架,原理
5. 多线程机制,消息机制 AsyncTask,Thread/Handler
6. 系统启动过程,system_server启动过程
7. Window系统,Window创建过程
8. 资源管理系统,资源加载机制等

《Android开发艺术探索》这本书确实不错,适合中级程序员;《群英传》我也看过,觉得没有上一本好;个人感觉《Android内核剖析》挺不错的,虽然有点过时了也买不到书了。

当你搞清楚了这些,基本上你写的什么代码在Android上层是怎么运作的都了然于胸;FrameWork层的任何问题也拦不住你的脚步了;不过这个阶段,仅仅是了解了Android系统Framework层的原理,对于怎么写代码,对于语言本身,对于Android系统底层的原理依然很迷惑,没事,已经看到了光了,一步一步来。

深入Java

Java语言相对来说比C++简单很多,但是对于经常写业务代码的人,对于如何写出优雅的java代码以及如何辨别垃圾代码,还有Java的内存模型/GC,并发机制,虚拟机执行流程肯定不甚了解,因此,这个阶段,我打算大致搞清楚Java语言本身,顺便从这个角度切入编程语言本身;主要如下:

1. 学习如何写更好的Java代码,《Effective Java》值得一读。
2. 什么样的Java代码是有问题的?《Java解惑》;怎么改写代码?《重构》
3. 学习一些没有接触过的Java高级库,NIO/AIO, concurrent/forkjoin等,有机会使用到工作过程中。
4. 了解Java虚拟机 《深入理解Java虚拟机》《实战Java虚拟机》;从这里,可以知道很多JVM的运行原理,内存模型,class文件格式,Java并发原理,虚拟机执行引擎等相当多的东西;虽然说Android的虚拟机Dalvik和ART(ART也许称不上虚拟机)使用的不是标准的HotSpot但是,我相信原理都差不多。

但是,Java平台的技术栈远非这么一点,学无止境;走到这一步,我觉得对于Java语言已经算得上掌握了,于是主要目标转向编程语言本身。

了解编译原理等CS基本知识

推荐一下R大的书单吧:zhuanlan.zhihu.com/hllv
当然由于定位不一样,我肯定不会像他一样专门搞搞基语言虚拟机(主要是我没那个水平!- - ),仅供参考;我自己目前看的几本书如下:《编程语言实现模式》《深入理解计算机系统》《SICP》《编译器设计》;然后由于在学Haskell,所以在追github上一个项目,sdiehl/write-you-a-haskell ;具体怎么做还是边走边瞧。

后面的我也不敢说太多,目前打算是希望深入了解Linux内核,以前看过《深度探索Linux操作系统:系统构建和原理解析》;打算看《深入Linux内核》《Unix环境高级编程》;只要越过了浮躁期,其实目标还是很明确的;知道自己该学习什么,也知道大致该怎么做;感觉自己走在正确的路上,越来越接近那个目标,每天都充满希望。

最后,作为搞技术的,一句话与题主共勉:

不为繁华易匠心