1.启动加载完内核
2.执行init进程 ----> 设备初始化工作
a1. 读取inic.rc
a2. 启动Zygote进程 ----> 该进程是所有进程的孵化器
b1. 初始化dalvik虚拟机
b2. 启动system_server进程
c1. 通过socket方式发送命令给Zygote进程
b3. 接到命令fork自身
c1. 创建dalvik虚拟机实例执行应用程序入口函数
Dalvik虚拟机执行程序流程:
[虚拟机线程] -> [装载程序类] -> [验证字节码] -> [查找主类] -> [执行字节码流] -> [结束]
1. 首先通过loadClassFromDex()函数完成类的装载工作
每个类成功解析后都有一个ClassObject类型的数据结构存在与运行时环境
2. 使用gDvm.loadedClasses全局哈希表来存储查询所有的装载类
3.字节码验证器使用dvmVerifyCodeFlow()函数对装入的代码进行校验
4.调用FindClass()查找并装载main方法类
5.调用dvmInterpret()函数初始化解释器并执行字节码流