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对象可以跨进程获取之前初始化的各项系统服务。
相关文章推荐
- VirtualApp原理解析(1)--初始化及注入流程
- VirtualApp原理解析(3)--安装双开应用流程
- 微信app支付java后台流程、原理分析及nei网穿透 转载自(http://www.cnblogs.com/MrRightZhao/p/7930916.html)
- VirtualApp原理解析(4)--双开应用启动过程
- 我记录网站综合系统 -- 技术原理解析[11:ActionProcessor流程-wojilu核心]
- 2011.8.19----(android中桌面widget的后台管理服务AppWidgetService初探)
- 秋色园QBlog技术原理解析:认识整站处理流程(二)
- 秋色园QBlog技术原理解析:Module之页面基类-生命周期流程(六)
- 秋色园QBlog技术原理解析:认识整站处理流程(二)
- 介绍Linux系统如何初始化和启动系统服务的(Linux的开机流程)
- 我记录网站综合系统 -- 技术原理解析[10:PermissionChecker流程]
- 介绍Linux系统如何初始化和启动系统服务的(Linux的开机流程)
- DNS系列(二)DNS服务的解析流程
- 秋色园QBlog技术原理解析:认识整站处理流程(二)
- 秋色园QBlog技术原理解析:Module之页面基类-生命周期流程(六)
- LLBL Gen 3.x 源代码追踪与解析 验证Validation的原理和流程
- 秋色园QBlog技术原理解析:Module之页面基类-生命周期流程(六)
- [dotNET]WSE2.0中的发送器/接收器流程用于WebService与后台侦听服务交互
- 秋色园QBlog技术原理解析:页面内容填充及多语言翻译流程演示示例(十)
- Xoohoo系列(二):初始化配置、加载模块或后台服务