Android中SPI的使用
Posted 王三的猫阿德
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的使用
SPI在Android工程中很少被使用到,主要因为SPI是针对厂商或者第三方服务商设置的机制,在平常的项目中很少会用到SPI。在业务越来越复杂的今天,很多应用趋向于组件化,项目中会依赖很多组件,这样会有一些问题,主工程和组件怎么通信,组件之间又怎么通信。当然有很多可以解决通信的方法,这里举个SPI例子。
图-1 举例示意图
以上是关于Android中SPI的使用的主要内容,如果未能解决你的问题,请参考以下文章
在 android 首选项片段中使用 startService()
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情