: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。