Android FrameWork学习总纲

必须谈谈学习思路

从今年开始学习Android FrameWork开发,作为一个系统,Android有它相对应的成熟体系,工欲善其事必先利其器,要学习一个庞大的系统,不能一头扎进去就看代码,其实看代码的话,所有程序员都会看代码,问题是怎么看代码,看什么代码

Android源码树异常庞大,如果想一行不漏地看,不可能;就算你这么干了,效果也不见得好————《只见树木,不见森林》。

在万能网络的帮助下总结了一下学习方法:

1、先理解模块对应的要解决的“问题”是什么,再去给问题找解决方案的思路去理解源码。

几乎所有代码or模块or系统的开发初衷,都是为了解决某一问题。如果光看源码,哦这个是干嘛的,那里调用了哪个API,这样看毫无意义。

先有的问题,之后才有的代码,看一个重要模块之前,首先弄明白此模块有哪些功能?怎么使用?如果这个功能给你去做,你会用什么方式去实现,以此为向导,可以了解相关问题的解决方案,学习一些除了代码之外的知识,然后再去了解学习Android系统中的实现,细节都在代码中,掌握了宏观的框架,再去看代码,这样看到***代码,“哦,我明白这个方法这样写是为什么,他干了什么?”有种叫做直觉的东西会降临,这样的状态会让学习效率直线上升,并无—-枯燥感

2、理解源码的功夫不止在Android本身,也要提高Android之外的姿势水平。

3、学习程序最需要会的一点就是–抽象。不管是写还是看。写的抽象不必说。看的抽象是啥玩意儿?就是开始看的时候要忽略细节,跟着流程走。工作原理一般都可以文字描述,如何实现的,跟着函数调用一步一步套,流程通了,细节就不在话下了。如果一开始就纠结各种变量、各种函数名、各种模式,估计会迷路吧。

4、终目的只有一个「学会看源码」,而不是「学会源码」

5、高度抽象,构建框架,重要函数,深究细节,善用工具,及时总结

最后,不要等到万事俱备的时候才去做某一件事,一旦决定去做,天亮就出发。

推荐一个Framework里最简单的Service——LightService,一共就以下几个文件。

1
2
3
/services/core/java/com/android/server/lights/LightsManager.java.
/services/core/java/com/android/server/lights/Light.java.
/services/core/java/com/android/server/lights/LightsService.java