android 启动过程(一)

《android 启动过程(一)》

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对象返回

    原文作者:裔海01
    原文地址: https://www.jianshu.com/p/d04bec7e5102
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞