Android优化module相互调用,通过开放接口的方式进行解耦

引言:

  在日常的开发中会遇到项目比较大,会根据代码功能进行对代码拆分成多个Module。拆分后遇到Module相互调用的问题采取的办法一般如下:

  • Module相互引用,直接进行调用。
  • 使用公共module申明接口,其它module分别进行实现和接口调用。然后在主Module中设置接口的实现。
  • 后来发现ARouter中也有与本文相似思路的实现,但是一直没有用过(此文章献丑了,考虑自己已经写完了,而且使用起来还是有点差别的,这个插件还是发出来吧)

  写这个插件的思路主要是想到了java的SPI(Service Provider Interface),考虑如何让META-INF/services下的配置文件自动生成(AutoService)、单例的接口实现如何获取,到最后使用Transform提前注册避免在运行时通过META-INF/services构建影响性能。

插件:

ServiceProviderBuilder

  插件的使用在github中有详细的介绍。不在此处多言。主要介绍一下使用插件的优点:

  • 支持接口与实现的指定,使用@ServiceProvider@ServiceImplementation分别标记接口和需要被构建的实现
  • 支持一个接口多实现
  • 支持一个实现有多个多接口
  • 可以加载构造私有的单例实现,使用@BuildService标记单例方法

欢迎使用和提问

你可能感兴趣的:(android,android开发)