android运行过程简书,android 启动过程(一)

d04bec7e5102

1、由init.rc调用 app_main.cpp的main方法,启动zygote进程

3、调用AndroidRuntime.cpp 的start方法传递ZygoteInit类路径

5、AndroidRuntime.cpp的start方法主要启动java虚拟机跟注册虚拟机,调用ZygoteInit的main方法

6、ZygoteInit的main方法主要 把zygote进程注册到ZygoteServer 、预加载一些类 、启动SystemServer进程、等待ams请求。

9、通过Zygote.forkSystemServer -->nativeForkSystemServer 方法创建SystemServer进程,得到一个runnable,并运行

14、通过反射SystemServer的main方法传到MethodAndArgsCaller 线程invoke,并返回该线程。

20、runselectLoop 监听fork进程 通过ZygoteConnection.processOneCommand返回MethodAndArgsCaller--> Zygote.forkAndSpecialize()-->handleChildProc-->ZygoteInit.childZygoteInit-->RuntimeInit.findStaticMain

22、SystemServer中的startBootstrapServices()注册一些系统服务通过SystemServiceManager.startService 传递ActivityManagerService的静态内部类Lifecyle 的class,在SystemServiceManager.startService中通过反射构造函数并返回

24、startOtherService 其中windowmanagerService是通过该方法注册的

26、在ams.systemReady方法中有两个地方会运行到ams.startHomeActivityLocked,我目前也不确定这块到底会运行那个,分别是startHomeActivityLocked(currentUserId, "systemReady");和mStackSupervisor.resumeFocusedStackTopActivityLocked();

27、根据Intent.CATEGORY_HOME封装Intent对象返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值