Android进程创建

来源:互联网 发布:sql存储过程脚本 编辑:程序博客网 时间:2024/05/18 06:23

zygote启动

1.解析init.zygote.rc中的参数,创建AppRuntime并调用AppRuntime.start()方法;2.调用AndroidRuntime的startVM()方法创建虚拟机,再调用startReg()注册JNI函数;3.通过JNI方式调用ZygoteInit.main(),第一次进入Java世界;4.registerZygoteSocket()建立socket通道,zygote作为通信的服务端,用于响应客户端请求;5.preload()预加载通用类、drawable和color资源、openGL以及共享库以及WebView,用于提高app启动效率;6.zygote完毕大部分工作,接下来再通过startSystemServer(),fork得力帮手system_server进程,也是上层framework的运行载体。7.zygote功成身退,调用runSelectLoop(),随时待命,当接收到请求创建新进程请求时立即唤醒并执行相应工作。

APP启动创建进程

点击APP图标之后Launcher所在进程便是这次创建新进程的发起进程,该通过binder发送消息给system_server进程,该进程承载着整个java framework的核心服务。system_server进程从Process.start开始,执行创建进程