国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【Android FrameWork】Zygote

2023-04-05 05:02 作者:Lianun  | 我要投稿

58:05 up畫流程圖

下面是我自己總結(jié)的大致的流程,可能會有錯,所以只能供參考。


init.rc 找到zygote的解析文件 執(zhí)行app_main的main函數(shù)

-創(chuàng)建AppRuntime對象,

-解析參數(shù),

-然后調(diào)用runtime對象的start函數(shù)(傳入“com....ZygoteInit”等參數(shù))

--通過jni_invocation.Init(Null)加載libart.so函數(shù)庫

--通過startVm(&mJavaVM,&env,zygote)創(chuàng)建Java虛擬機

--通過startReg(env)注冊JNI環(huán)境(封裝了許多jni函數(shù)) 17:34

--解析參數(shù)找到ZygoteInit.java的main函數(shù),并通過CallStaticVoidMethod(startClass,startMeth,strArry) 調(diào)用java層的ZygoteInit的main函數(shù)

---創(chuàng)建ZygoteServer服務(wù)端(沒有實例化),

---通過startZygoteNoThreadCreation開啟線程的限制

---設(shè)置參數(shù)后,通過preload(bootTimingsTraceLog)進行預(yù)加載,預(yù)加載clss,系統(tǒng)資源,drawable,color等

---加載完后,通過gcAndFinalize()進行一次gc

---通過initNativeState(isPrimaryZygote)對Zygote初始化一些native state

---通過stopZygoteNoThreadCreation()關(guān)閉線程創(chuàng)建限制

---實例化ZygoteServer,然后通過forkSystemServer(...)開啟SystemServer

---通過zygoteServer.runSelectLoop(abiList) 開啟循環(huán),等待客戶端請求并處理(注意這里會等待一個caller返回){//下面是死循環(huán)

----通過Os.poll(...)進行阻塞,等待請求

----如果拿到請求,就會調(diào)用processsOneCommand(this)處理客戶端的請求(這里會返回caller)

-----將參數(shù)包裝進ZygoteArguments包裝類里

-----通過Zygote.forkAndSpecialize(...)將子進程fork出來,具體是函數(shù)內(nèi)部會調(diào)用native的nativeForkAndSpecialize函數(shù)->ForkCommon(...)->fork()

-----然后處理子進程的事情,如通過closeServerSocket關(guān)閉ServerSocket

-----最后調(diào)用handleChildProc進行處理(這里會返回caller)

------通過closeSocket()關(guān)閉socket請求

------通過ZygoteInit.zygoteInit(...)來初始化進程信息,并且創(chuàng)建binder

-------通過ZygoteInit.nativeZygoteInit()來初始化進程信息,并且創(chuàng)建binder, 其中nativeZygoteInit里面會調(diào)用appRuntime的onZygoteInit方法,這個方法會①調(diào)用ProcessState::self方法來創(chuàng)建初始化進程信息 ②開啟線程池

-------初始化完成后會調(diào)用RuntimeInit.applicationInit(...)方法對客戶端請求信息進行包裝,然后返回一個caller,這個caller包裝了客戶端請求調(diào)用的類的main方法的信息}

---拿到caller后,會退出循環(huán),通過caller.run方法調(diào)用客戶端請求調(diào)用的類的main方法



【Android FrameWork】Zygote的評論 (共 條)

分享到微博請遵守國家法律
大庆市| 深圳市| 恭城| 巫溪县| 敦化市| 城固县| 黑河市| 论坛| 怀集县| 商水县| 芮城县| 白朗县| 永兴县| 合川市| 改则县| 宁国市| 浪卡子县| 香港 | 南通市| 海阳市| 无极县| 石门县| 东乌珠穆沁旗| 新营市| 南和县| 晋中市| 大名县| 广昌县| 达州市| 古交市| 齐河县| 竹溪县| 罗源县| 临清市| 白银市| 武冈市| 尼玛县| 滨州市| 富平县| 正蓝旗| 周口市|