占位式插件化原理初探

什么是插件化?

对于移动端开发,所谓插件化就是在一个宿主APP内打开另一个未安装的插件APP,插件使用了宿主的上下文,即context。

要实现插件化,需要宿主、插件两应用实现同一套标准。

进行时需要新建一个项目,项目分为三个模块,一个宿主APP(app model),一个插件APP(plugin_package model),一个接口标准(startder library)。

我们要做的是从宿主MainActivity跳转到插件的PluginActivity,再从插件的PluginActivity跳转到插件的PluginMainActivity,这是两个步骤,需要不同的实现方法。

宿主内如何启动插件内页面 ?

app和plugin_package都依赖于startder,startder包含一个接口ActivityInterface,内置一些生命周期方法和可注入context的方法,让插件APP实现这一接口,随后在宿主APP修改classLoader 和 resource,再通过反射创建插件APP实例,将实现标准的接口类转换成ActivityInterface反射调用,达到启动。

插件内页面如何启动插件内页面?

插件内的页面启动应基于宿主的上下文环境,否则一定失败,如何利用宿主环境启动呢?我们可以利用宿主的环境将插件内的startActivity方法调用到宿主类去,就像这样:appActivity.startActivity(newIntent); 随即将要跳转的Activity class通过Intent传递过去,在宿主类拦截,利用自身的任务栈启动。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值