VirtualApp原理解析(2)--后台服务初始化流程

VirtualApp原理解析(2)–后台服务初始化流程

VirtualApp后台服务进程运行BinderProvider,其继承自ContentProvider。后台服务主要类:VAppMS,VAMS,VPMS等。

主要功能:数据结构组建状态保存、模拟系统API的实现、预处理等。

以下是VirtualApp的后台服务初始化流程图:

1.后台服务初始化在SplashActivity启动之后进行的。

  • 在SplashActivity的onCreate中通过一系列构造ProviderCall及最终调用到ContentResolver.call()跨进程访问BinderProvider。

2.访问到后台服务BinderProvider中。

  • 如果BinderProvider没有创建则执行创建之后执行onCreate方法。在onCreate中首先启动一个DemonService提升其所在进程的优先级。

  • 接着会依次初始化VPMS并将起添加到ServiceCache中的Binder的Map<String, IBinder> sCache中:

    • 初始化VPMS有两个步骤,首先创建VPMS实例对象,接着新建VUMS传入前面的实例。
  • 初始化VAMS添加到sCache:

    • 首先创建VAMS实例回调其中的onCreate,在该方法中获取该VAPP下的组建信息保存。
  • 初始化VAPPMS,该服务主要用于将双开目标应用安装到VirtualApp中。

    • 创建VAPPMS实例,从配置文件中读取一个已经安装应用的UID列表保存到map中。
  • 之后还会初始化诸如:VJobSchedulerService、VAccountManagerSService等与系统对应的服务。

  • 将上述服务初始化成功后添加到sCache中等待客户端进程调用。

  • 执行玩onCreate接着调用call函数因为不满足执行条件不分析。这里的call方法其实是返回一个集合了所有后台服务Binder的一个对象。客户端进程调用可以获取所有需要的后台服务Binder进而调用相应方法。

3.初始化完成后台服务之后由SplashActivity跳转到HomeActivity。

简单总结:

主要是创建初始化BinderProvider及其他系统服务,保存这些系统服务到map便于查找。

BinderProvider的call方法向客户端提供IBinder对象可以跨进程获取之前初始化的各项系统服务。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值