您的位置:首页 > 移动开发

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

2017-05-26 10:20 441 查看

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对象可以跨进程获取之前初始化的各项系统服务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐