Android中SPI的使用

弱龄寄事外,委怀在琴书。这篇文章主要讲述Android中SPI的使用相关的知识,希望能为你提供帮助。
转载注明出处: http://blog.csdn.net/xiaohanluo/article/details/71515678
1. 简介 SPI全称是Service Provider Interface, 服务提供方接口, 服务通常是指一个接口或者一个抽象类, 服务提供方是对这个接口或者抽象类的具体实现, 由第三方来实现接口提供具体的服务。SPI提供了一种动态的对应用程序进行扩展的机制, 通常用作框架服务的拓展或者可替换的服务组件, 但是在android中并没有广泛的使用。
SPI运用场景主要有:

  • Java Database Connectivity
  • Java Cryptography Extension
  • Java Naming and Directory Interface
  • Java API for XML Processing
  • Java Business Integration
  • java Sound
  • Java Image I/O
  • Java File Systems
官方介绍文档: https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html
2. SPI机制
  • 在resources/META-INF/services/目录中创建以服务全限定名命名的文件, 该文件内容为服务的具体实现类的全限定名, 文件中可以写多个服务的具体实现类
  • 使用ServiceLoader类动态加载服务的具体实现类
  • 服务具体的实现类必须有一个不带参数的构造方法
  • 如果服务的具体实现类在Jar包中, 则需要放在主程序的classPath中
3. SPI的使用 【Android中SPI的使用】SPI在Android工程中很少被使用到, 主要因为SPI是针对厂商或者第三方服务商设置的机制, 在平常的项目中很少会用到SPI。在业务越来越复杂的今天, 很多应用趋向于组件化, 项目中会依赖很多组件, 这样会有一些问题, 主工程和组件怎么通信, 组件之间又怎么通信。当然有很多可以解决通信的方法, 这里举个SPI例子。
Android中SPI的使用

文章图片

图-1 举例示意图

    推荐阅读