Spi 全称
Service Provider Interface. 即服务提供接口
其实就是为某个接口寻找服务的机制,有点类似IOC的思想,将装配的控制权移交给ServiceLoader。SPI在平时我们用到的会比较少,但是在Android模块开发中就会比较有用,不同的模块可以基于接口编程,每个模块有不同的实现service provider,然后通过SPI机制自动注册到一个配置文件中,就可以实现在程序运行时扫描加载同一接口的不同service provider。这样模块之间不会基于实现类硬编码,可插拔。
下面是一个栗子:
我们逐一讲解一下
图1
通过图一可以看出这个工程中有4个module
app:主工程, intenfacdmodule 这里面定义了接口, mymodule1一个接口的实现module, mymodule2 另一个接口实现module
下面我们看一下他们的关