:x進(jìn)程啟動(dòng)時(shí)序圖
:x進(jìn)程是VirtualApp所有虛擬服務(wù)所在的進(jìn)程,模擬了大部分的系統(tǒng)服務(wù),以供插件(虛擬App)調(diào)用。下面便是:x進(jìn)程啟動(dòng)時(shí)序圖。點(diǎn)此鏈接可查看高清svg圖::x進(jìn)程啟動(dòng)時(shí)序圖
過程分拆:
1、在啟動(dòng)主應(yīng)用閃屏的時(shí)候,調(diào)用VirtualCore的waitForEngine方法。
2、waitForEngine方法僅做了一件事,就是調(diào)用了ServiceManagerNative的ensureServerStarted方法。
3、注意這個(gè)ensureServerStarted方法,它訪問:x進(jìn)程的BinderProvider的call方法,從而使得:x進(jìn)程啟動(dòng)起來(lái)。
4、BinderProvider啟動(dòng)時(shí)會(huì)回調(diào)onCreate方法,在其中啟動(dòng)后臺(tái)的DaemonService,保持:x進(jìn)程不被系統(tǒng)殺死。然后初始化各個(gè)模擬的系統(tǒng)服務(wù),如VPackageManagerService、VUserManagerService、VActivityManagerService、VAppManagerService、VNotificationManagerService、VAccountManagerService等,并注冊(cè)到ServiceCache中。
5、VirtualApp是支持多用戶的,其中VAppManagerService會(huì)調(diào)用UidSystem的initUidList方法來(lái)加載uid文件,得出每個(gè)插件包名和uid的對(duì)應(yīng)關(guān)系,以及下一個(gè)可用的uid。