Android 进程的创建

        之前面试字节跳动的时候被问了一个问题:你能描述下linux下一个进程的启动流程吗?或者安卓的也可以。我想了下,嗯不会,面试中的问题总是来的那么猝不及防。安卓启动一个apk就是一个进程,来看下安卓下如何启动一个进程的。

        先简单说下安卓系统的启动流程。安卓系统开机先是由BootLoader引导程序启动,把kernel拉起来并运行。kernel启动时,设置缓存、被保护存储器、计划列表,加载驱动。当kernel完成系统设置,它首先在系统文件中寻找”init”文件,启动init进程,init对init.rc文件进行解析,启动zygote。zygote是安卓系统的第一个Java进程,是所有Java进程的父进程,创建system server 、AMS、pws等进程。等系统相关的服务都启动后,然后开始启动apk。

       Android 进程的创建

        接下来看看,安卓如何启动一个apk的启动流程,我手上的板子是安卓4.4.2的系统,所以安卓4.4.2的源码来说,大的调用流程如下,从activity启动到zygote fork新的进程。Process::openZygoteSocketIfNeeded到ZygoteConnection::runOnce,是通过socket通知zygote进程,创建子进程,这样app的进程就启动了。 但是内存的申请在哪儿,还是得找时间再看看。毕竟面试的时候大家都喜欢问内存相关问题

Android 进程的创建