以前一直搞BMP平台,现在Android实在太热了,由于项目的需求,现在也开始转到Android平台上了。个人认为,不管哪个平台,要学好他,都必须要搭好基石,才能轻松攀爬。而且不同平台的基石是不一样的,比如BMP平台的重要基石,如需要理解COM组件模型,C,MVC等 而对于Android平台,个人认为以下基石是非常重要的,对于日后的轻松攀爬奠定基础。 当然了,因为笔者才刚刚接触Android,所以以下理解可能有所错误,欢迎指正。 注: 以下针对学习android平台,而不针对仅仅使用android平台开发APK应用的,对于后者,基石基本上就少的多了 编程语言基石
Java: 必要。 这是Android Application和Framework的语言支柱C: 必要: Native 部分代码使用C语言实现,包括JNI的Native CodeC++: 必要: Native很多代码使用C++实现JNI: 必要: 包括Java Call Native Code 和 Native Call Java Code。 Android中经常出现Java 和 Native 代码空间的切换Assemble: Optional: 除非你想学习Linux Kernel, Driver等Kernel Space的内容GNU Make: Optional: Android设计了很好的Make 系统,基本了解一下Android的Make系统即可,依样画瓢。PerL and other Script: Optional 通用知识面基石
XML: 必要OS Basic Concept: such as Process, Thread, RPC, IPC, etc: 必要Linux OS/Programming Basic Concept: Such as Linux File/IPC/Thread/etc  Mechanism and API: 必要: Android源码中大量调用了Linux API。Design Pattern: MVC/Factory Pattern/Observer Pattern/Etc: 必要: 对于理解Framework中很多组件的设计和使用有帮助Data Base: SQL Query Language: 必要 Android特有重要机制基石
BinderIPC: 必要:包括Java和Native层,只有掌握了BinderIPC,才能在阅读代码时,当发生RPC调用时,能够跨进程阅读真正调用到的代码Looper/Handler/Etc:必要:因为Android中封装了Java的Thread机制,所以,只有掌握Android中新的Thread机制,才能在阅读代码中,清楚的了解当前代码运行的线程。 专业领域基石
如网络,图像,安全等:Optional: 这部分和Android本身没有关系,任何平台上涉及专业领域的内容,肯定必须要求阅读者掌握相关领域的知识才能阅读。所以,这部分仅仅针对有这方面需要的人。 阅读代码时时刻掌握Context(运行上下文)
由于Android中涉及了线程,进程,以及不同的代码空间。所以,在阅读代码时,应该时刻关注以下几点: 1. 时刻关注当前代码运行的进程,线程(MainUI 线程,Binder线程,或者其他线程)以及代码空间(Java,Native)2. 时刻关注进程,线程,代码空间的边界, 如线程的创建/终止/切换, 进程的创建/终止/切换,Java代码与Native代码空间的切换