总记
主要是使用搜索引擎进行各种搜索,各位前辈积累了大量优质的网络资料。
在本次的学习过程中,感谢以下两个站:
Coding And Living
老罗的Android之旅
PS: Coding And Living的站在美国,访问稍慢。老罗的站,会讲的更深入一些。
问题1:Android系统是如何启动的?
问题目标:
了解其启动流程即可,不需要研究具体实现。不做深入研究。
需要准备的知识:
- 基础的操作系统原理。
- 基础的硬件知识,知道CPU、内存、磁盘之间的关系。
学习小记:
推荐: 详解 Android 是如何启动的
因为自己做过些嵌入式开发,算是对Linux操作系统略知一二,所以这部分的学习还算是比较快。
搜索引擎直接使用了百度,因为已经穷到付不起vpn的钱了。
看了大约十篇左右的文章。感谢前辈们的知识输出。
问题2:Android系统中的App是如何启动的?
问题目标:
仍然是了解启动流程即可,不做深入研究。
需要准备的知识:
- 进程、线程、IPC
- 基础的Java代码阅读(知道加减乘除循环判断等基础语法即可)
学习小记:
推荐: Android 应用进程启动流程
学习过程中,最难的地方在于会产生其他的疑问。比如Activity是如何跟AMS通讯的?既然Activity可以在不同的进程里,那么App的main函数在哪里?等等诸如此类。
这些问题有些随手搜索,很快就能够得到答案,有些就需要仔细研究一下了。对我来说比较难的问题,会列在下面的学习记录中。
问题3:前面的学习中会遇到IPC,Android的IPC机制是怎样的?
问题目标:
了解Android的IPC机制。
需要准备的知识:
- 进程、线程、IPC
- 代理、反射
学习小记:
推荐: Android Binder 全解析(1) -- 概述
推荐: Android Binder 全解析(2) -- 设计详解
推荐: Android Binder 全解析(3) -- AIDL原理剖析
这部分对我来说有点儿复杂。主要是学习过程中,对Activity和Service两个东西的理解并不是很清楚。
不过,仍然觉得,应该先搞清楚IPC,然后再去了解Activity和Service。也就是,先搞清楚了大框架,再去关注细节的意思。
问题4:Activity是怎么启动和结束的?
问题目标:
了解Activity的启动和结束流程。
需要准备的知识:
- 进程、线程、IPC
- 代理、反射、回调等
学习小记:
推荐: Android Activity 生命周期是如何实现的
这部分其实没什么难点,就是反射、回调、状态锁等一些常规的软件实现过程。
其他小问题:
Activity是一个进程,还是一个线程?
App的main函数在哪里?
我为何会觉得Android中的Task会如此的不人道?(这个问题没有得到解决)
小结
算是初次真正接触Android开发。从一个程序猿的角度来讲,对这个系统的初次感受:
开放但不够友好。
两个小时的学习中,留下了印象的主要关键词:Linux | Zygote | IPC | Binder | Activity Manager Service
其实还有个问题没有得到解决:
Android给了开发者足够的发挥空间。那么,代价呢??