最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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的評論 (共 條)

分享到微博請遵守國家法律
邛崃市| 乌鲁木齐县| 西乡县| 茶陵县| 广元市| 江都市| 富阳市| 如东县| 沭阳县| 穆棱市| 阿拉善盟| 三台县| 东港市| 宣化县| 搜索| 阿坝县| 西华县| 奉贤区| 页游| 古蔺县| 手游| 桐城市| 大名县| 巧家县| 宝丰县| 平顺县| 大姚县| 高淳县| 广昌县| 昭苏县| 海丰县| 怀来县| 和平县| 稻城县| 双鸭山市| 安龙县| 石家庄市| 永城市| 墨竹工卡县| 南平市| 宝兴县|