赞
踩
一、app_process与Zygote
Android中,创建进程的方式有4种,其中app_process和Zygote有什么不同呢?
Android系统内核初始化完毕后,进入用户空间启动的第一个进程叫init 他是Android系统所有进程的祖先,这个进程启动后会初始化文件系统。Zygote主要负责如下任务
负责启动java虚拟机
加载很多需要预加载的类和系统资源
负责启动systemServer ,systemServer 会启动android中的所有服务,基本上完成了上层框架的所有功能。
负责初始化新进程,其实就是fork app的独立进程,比如启动一个application,那么zygote就负责为新启动的activityThread建立进程,并调用AppRuntime 、activityThread中的main,或进行初始化。
对于init来说zygote其实就是一个很普通的服务
service zygote /system/bin/app_process32 -Xzygote /system/bin --zygote --start-system-server --socket-name=zygote
class main
priority -20
user root
group root readproc reserved_disk
socket zygote stream 660 root system
onrestart write /sys/android_power/request_state wake
onrestart write /sys/power/state on
onrestart restart audioserver
onrestart restart cameraserver
onrestart restart media
onrestart restart netd
onrestart restart wificond
writepid /dev/cpuset/foreground/tasks
service zygote_secondary /system/bin/app_process64 -Xzygote /system/bin --zygote --socket-name=zygote_secondary
class main
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。