对项目的基本介绍
- 1.整个框架主要是给MVVM框架使用的 , 自己写完interface接口后 , 通过自定义的注解就能自动生成接口方法
- 2.用Kotlin的Flow去代替RxJAVA , 因为我发现RxJava功能很强大 , 但是大家都只是在Http层面使用了一下 , 既然要用Kotlin里面就已经有Flow , 那我还不如少添加一个库
- 3.通过jetpack的Room数据库实现网络请求的存储 , 缓存策略也用过注解去完成 。
- 4.发起的网络请求是与宿主生命周期绑定的 , 在网络请求回来之前 , 宿主已经销毁的话 , 网络请求也会中断的
其中@AutoApi , @AutoFlowApi , @NetStrategy是自定义的注解 , 后面会介绍到 。
文章插图
2.要先编译 , 会在你的接口类的文件夹下生成一个xxxRepository.class这是通过注解自动生成的文件 , 使用了kotlinpoet 并且这里apiService就是通过Retrofit拿到的接口代理
文章插图
3.在viewmodel拿到对应Repository类的方法
文章插图
4.在对应地方通过viewmodel调用调用接口 , 传入对应参数
文章插图
在合适的地方观察
文章插图
Retrofit的封装上面说到在Repository类的apiService就是通过Retrofit拿到的接口代理类 。所以先进去看看apiService好了
可以看到apiService是BaseRepository的变量 而我们生成的Repository都是继承BaseRepository的
文章插图
当我们调ConfigRepository类中的方法时候 , 就会将ConfigRepository传入findNeedType
文章插图
而findNeedType方法就会将ConfigRepository对应的ConfigService得到并且返回出去
文章插图
所以apiService就相当于这样 , 好像有点Retrofit的create方法的样子了
var apiService: T = HttpProvider.defaultCreate(ConfigService) as Class<out T>)
我们继续进入HttpProvider.defaultCreate
可以看到newRetrofit(),并且传入了一个HttpConfig,看到这个名字就知道这是Http的配置 接着是newCreate() , 接收了我们的接口service类
文章插图
首先看看newRetrofit方法这几行代码就是创建了一个Retrofit对象并且保存起来 , 最后返回出去 。但是他是怎么和HttpConfig联系起来的呢?
文章插图
我们可以看到这里将生成的Retrofit.Builder()传给了HttpConfig的方法build里 , 我们进去看一看
文章插图
可以看到这里就是我们再熟悉不过的Retrofit的配置环节
文章插图
所以通过newRetrofit方法 , 我们就将Retrofit对象配置好并且拿到Retrofit对象 , 还保存起来方便下次复用
在看看newCreate()方法这是个扩展函数 , 是Retrofit的扩展函数 将传入的ConfigService通过Retrofit.create()生成代理类 , 并且保存起来复用
文章插图
注解的介绍1.AutoApi我们从最简单的AutoApi做引子 , 开始介绍整个注解框架
只要你的接口类方法中使用了这个注解 , 就会生成suspend方法 , 非常的简单 接着我们来看看他是怎么实现的
文章插图
文章插图
推荐阅读
- 鹿茸面膜使用方法是什么
- 使用面膜过敏的急救措施是什么
- 拉链拉不下来怎么办?
- Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
- Android开发:当前项目以Module形式引用别的项目的步骤
- MQTT协议使用总结
- 使用Redis时要避免的5个错误
- Linux进程管理
- 白帽黑客如何使用Dirbuster网站目录扫描神器
- 专门针对chrome谷歌浏览器而开发的一款访问插件