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對象返回
總結
以上是生活随笔為你收集整理的android运行过程简书,android 启动过程(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tcp/ip四层和osi七层
- 下一篇: l2-006 树的遍历