Android 启动
1,Android OS启动
Android在Linux字体启动步骤如下:(1) init 进程启动:内核启动之后启动的第一个用户级进程,该进程将根据init.rc和inir.xxx.rc建立几个基本服务(ServiceManager、Zygote)(2) Native 服务启动:Servicemanager 和zygote 进程就奠定了Android 的基础。Zygote 这个进程起来才会建立起真正的Android 运行空间,初始化建立的Service 都是Navtive service 建立Java Runtime 建立虚拟机 进入Zygote服务框架(Zygote 建立好了,利用Socket 通讯,接收ActivityManangerService 的请求,Fork 应用程)(3) System Server,Android 服务启动:Zygote fork一个进程SystemServer,SystemServer建立Android要用到的服务并用init2建立一个线程(4) Home 启动:Home 就是在ActivityManagerService.systemReady() 通知的过程中建立的到这里Android OS就已经启动完成了。
2,Android应用启动
每一个android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理、Mutex等等都是依赖底层操作系统而实现的。所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。Android每一个进程都对应一个ActivityThread实例,每一个ActivityThread都包含有一个ApplicationThread实例,它是一个Binder对象,负责和其它进程进行通信