我们再来回顾一下如何启动一个插件:
首先,我们要明白一个插件是没有安装到手机上的,所以我们需要将上下文(Context)传递到插件中,插件用到上下文到方法需要复写....);
void onReceive(Context context, Intent intent);
}
然后在BaseActivity中重写registerReceiver 和sendBroadcast...,其实就是启动了宿主定义好的的一个空壳的广播,然后通过DexClassLoader反射插件中的广播类,然后通过继承的接口,来进行方法的调用和参数的传递.
public class ProxyBroadcast...= null) {
bordcast.onReceive(context, intent);
}
}
}
同理,在宿主方法中需要做一些处理,new ProxyBroadcast...插件静态广播实现原理:
我们知道任何插件都是没有安装到手机上的,静态广播是注册在AndroidManifest中,那么,我们就不能通过上述那样轻松的拿到类名进行反射了,如下代码
android