美文网首页Android精选
android 启动过程(一)

android 启动过程(一)

作者: 裔海01 | 来源:发表于2019-01-18 16:40 被阅读31次

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

    相关文章

      网友评论

        本文标题:android 启动过程(一)

        本文链接:https://www.haomeiwen.com/subject/ilvkvttx.html