Android ServiceLoader使用
ServiceLoader使用步骤
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、ServiceLoader是什么?
看到这里的时候笔者假设你已经知道ServiceLoader是做什么用的了。不会的请自行查阅文档
二、使用步骤
1.准备工作
- 一个android工程
- 新建一个module library
里面创建一个接口,比如叫UserService - app module依赖 步骤2 创建的library
并新建一个类实现UserService接口
最后的工程目录类似于这个样子
**
最关键的一步
**
配置我们的实现类,分别在app module和library module里面创建配置文件,位置在java文件夹目录平级:META-INF/services/,创建一个文本文件,**名字命名为UserService的全路径名(就是你创建的接口类的全限定名)**内容就写你当前module内实现类的全限定名,例如我的工程配置如下:
哦了,万事俱备只欠东风,最后一步:
如何在library内获取UserService接口所有实现类呢?
ServiceLoader<IUserService> load = ServiceLoader.load(IUserService.class);
if (load == null) {
System.out.println("service is null");
}else {
for (IUserService service: load) {
System.out.println(service.getClass());
System.out.println(service.getUser());
}
}
哦了,网上找了很多都没说META-INF 文件配置的注意事项,切记,配置文件名称是用接口的全路径名,内容是写当前模块内的实现类类名。
欢迎同学们一起交流~~~