VirtualApp拆解之一::x進程

:x進程啟動時序圖

:x進程是VirtualApp所有虛擬服務所在的進程,模擬了大部分的系統服務,以供插件(虛擬App)調用。下面便是:x進程啟動時序圖。點此鏈接可查看高清svg圖::x進程啟動時序圖

過程分拆:

1、在啟動主應用閃屏的時候,調用VirtualCore的waitForEngine方法。

2、waitForEngine方法僅做了一件事,就是調用了ServiceManagerNative的ensureServerStarted方法。

3、注意這個ensureServerStarted方法,它訪問:x進程的BinderProvider的call方法,從而使得:x進程啟動起來。

4、BinderProvider啟動時會回調onCreate方法,在其中啟動后臺的DaemonService,保持:x進程不被系統殺死。然后初始化各個模擬的系統服務,如VPackageManagerService、VUserManagerService、VActivityManagerService、VAppManagerService、VNotificationManagerService、VAccountManagerService等,并注冊到ServiceCache中。

5、VirtualApp是支持多用戶的,其中VAppManagerService會調用UidSystem的initUidList方法來加載uid文件,得出每個插件包名和uid的對應關系,以及下一個可用的uid。




最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容