android启动过程

手机启动过程:
1.linux内核启动:压缩内核启动 内核初始化 启动内核 (linux部分)

2.执行init进程  由init.c解析init.rc文件 启动zygote(孵化器 第一个dalvik虚拟机 )

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server

zygote是一个C程序(详见app_main.cpp)

在app_main中调用了AndroidRuntime(AndroidRuntime.cpp) 的start()方法

在start()方法中 1.完成Dalvik虚拟机的创建 ,2.注册JNI方法,3.同时通过反射执行了ZygoteInit的main  从而开启了java世界


详细请看ZygoteInit.java

首先注册一个socket并监听(主要与AMS进行通信)

调用了preloadClasses(); preloadResources(); 来加载一下共享资源

然后产生子线程system_server 在system_server方法中完成各种服务的初始化(WMS,AMS,各种Service)

当AMS初始化完成后 通过之前注册的socket告诉服务端 开始执行home程序

3.android系统启动完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值