一个想法
对历史有些了解的同学,应该都知道《海国图志》这本书,当时中国闭关锁国,社会、科技和经济发展严重滞后于其他国家,中国近代新思想的倡导者 魏源 不满当时中国的现状,编撰了在当时对西方社会地理和历史最为详实的专著,也就是前文提及的《海国图志》 。文中对 "蛮夷" 的理解有些偏袒,不过在当时之中国相当先进,这给愚昧的国人打开了一扇看外面世界的窗。这本书对我意义重大,以至于对于历史不好的我而言,忘却太多的历史珠玑,唯独这本书还记得,于我而言,就好比,一个科技工作者试图用自己的力量来改变国运,每每念及此,心里还是不免反复。
在经历一段时间的 Android 开发以后,虽然对各个方面都有涉及,还是没有形成很系统的知识,大抵都是散兵游勇,不成体系。在思考一番过后,决定建立一个对这些内容进行一次整理,以建立完整的知识结构,更便于自己对 Android 方面加深了解,进一步提升自己的内功。基于自己的认识,建立一个 Android 开发世界的 《海国图志》,也是对自己的提升。
本人能力有限,这些认识大多都是自己的一面之词,如果能侥幸帮到读者,就甚感欣慰。
一个计划
在我所认知的 Android 开发中,可以大致分为如下几部分,分别如下:
- 系统服务,亦即系统提供的底层功能,主要涵盖 ActivityManagerServices 、WindowsServices 、SystemServer 等等。在进行应用开发时,免不了依赖于这些服务。如果把 Android 比喻成人,系统服务就是其灵魂,如果灵魂出现问题,那么肉身也难保。
- 应用组件,Android 是基于组件进行的开发系统,为我们所共知的是 Android 四大组件,Activity 、Services 、Broadcast 、ContentProvider。几乎所有 Android 程序都是由这 4 大组件通过 通信框架进行内部串联,并与系统服务进行通信,从而得到具有特定功能的应用。这部分就是人的肉体,颜面,决定了应用长什么样,有什么样的功能。
- 通信框架,这里主要是指进程间通信 和 线程间通信两大部分。进程间通信依附于 Binder Framework,而 Handler 则承担了一部分的线程间通信的工作。这两大模块,将整个系统串联起来,形成一个完整的整体,这就类似于人的骨架。
- 周边知识,例如打包、签名、插件化等等。这就是类似于人的装饰品,是给我们撑场面的。
因而这部分的海国图志,是关于上述四部分核心内容的归纳总结,拟定的目录如下:
一、系统服务篇
- :clock1: DONE: Android 如何启动?
- [x] DONE: Android 应用进程启动流程
- [ ] 什么是系统服务?
- [ ] ActivityManagerService
- [ ] SystemServer
- [x] DONE: Android 应用安装过程源码解析
- [ ] WindowManagerService
- [ ] Zoyote 前世今生
二、通信框架篇
- [x] Binder 完全解析
- [x] DONE: Binder 完全解析(一)概述
- [x] DONE: Binder 完全解析(二)设计详解
- [x] DONE: Binder 完全解析(三)AIDL实现原理分析
- [x] Handler 通信框架
- [x] DONE: Handler消息机制源码解析
三、应用组件篇
- [ ] Application 是什么?
- DONE: Context 分析
- [ ] Activity 组件分析
- [x] DONE: Activity生命周期是如何实现的
- [ ] Services 组件分析
- [ ] ContentProvider 组件分析
- [ ] Broadcast 组件分析
四、珠玑拾遗
- [ ] Gradle 用法
- [ ] 混淆一二事
一个愿望
这部分的工作势必会耗时较长的时间,期间也可能穿插其他内容,不过我会尽量保证进度,期待在完成时,能有一些不错的感悟和心得,最好是进入某种化境 :)。
各位可以关注我的微博 weibo.com/woaitqs,以及个人网站 woaitqs.cc,有事可以邮件沟通 woaitqs[at]gmail.com。
感谢大家的支持!