System进程的启动过程

来源:互联网 发布:qq三国张飞和关羽js 编辑:程序博客网 时间:2024/06/09 20:33

首先System进程故名思议,是 Android的系统进程,它是android 的卵Zygote孵化而来.

1.我们首先定位到ZygoteInit的startSystemServer方法。里面有forkSystemServer方法,这个是复制一份进程共享资源,返回pid为0的话,就会在子进程中执行handlesystemServiceProcess方法。


2.上面那个方法会关闭不需要的服务端socket,然后执行到systemService的main函数 。

里面有init1和init2的方法,前者启动关键的C++语言开发的系统服务,后者是启动java语言的系统服务。


3.在init2方法里我们把ActivityManagerService,PackageManagerService,ContentService,

WindowManagerService加入到了ServiceManager.通过不同的方法加入,如main,setSystemProcess或者直接加入等。这样就把关键服务启动起来了,也明白了为什么在我们APP进程需要跨进程和system进程通信,通过aidi的方式来调用ServiceManager来获取服务的代理对象了。

0 0
原创粉丝点击