android核心机制之Zygote启动流程1.先说一下android中的服务,一种是系统服务,系统服务通过getSystemServic
android核心机制之Zygote启动流程
1.先说一下android中的服务,一种是系统服务,系统服务通过getSystemService方法获得,所有的系统服务运行在一个进程中.
?
2.还有一种是自定义Service,也就是通过startService启动. 这种服务是单独一个进程.
?
Zygote实际上是一个进程繁殖器,通过socket的select模型进行繁殖.类似命令的方式来进行Fork.
下面绘制了其流程图.
?
可以看到:
启动完ServiceManager后,启动Zygote和SystemServer进程。
1.Zygote服务实际上是一种Select服务模型.
2.为了启动java代码,进行了一次androidRuntime的打开和关闭.
3.启动的SystemServer进程,此进程启动了一个线程注册了很多服务之后,开启了手机的HOME(也就是桌面),然后开始服务循环.(注意:此服务是Binder服务,Binder服务一启动就是俩线程。可能是因为是两个CPU吧。
代码如下:
4.Zygote进入select循环系统,开始服务.
5.此服务是很简单的,而且是通用的服务代码。(也就是取数据,传输数据,与SOCKET有些类似)。上层必须基于此服务原型来写相应的代码。
?
?

