文章插图
文章插图
这里不好解释 , 我直接画图了
文章插图
CoroutineDataFetcher { apiService.getData() }.startFetchData()
apiService.getData() 就是发起网络请求,看一下CoroutineDataFetcher
文章插图
startFetchData() , 就是根据传入的缓存参数 , 去找到对应的缓存策略发起Http请求的方法 , 很简单看一看就好
文章插图
代码的分析通过上面分析我们可以知道 , 你新写一个注解 , 其实就只需要编写两个类就好了
- 一个继承 RepositoryMethod 的参数收集器
- 一个继承 AbsFuncBuilder 的方法具体内容输出器
AutoFlowMethod
可以说和 AtoMethod 一模一样了 , 都是收集默认参数 不一样的地方就是下面的一些配置
文章插图
通过重写 AbsFuncBuilder 的暴露出来的配置方法 , 去修改方法的配置信息 , 比如图中的
- isNullable,方法返回值能否为null
- isNeedSuspend,方法是否是需要suspend关键字
- isNeedReturnType,方法是否需要返回值
文章插图
AutoFlowApiFuncBuilder
这个是AutoFlowApi注解最关键的方法了 , 里面代码比较多 , 但是也没什么好解释的 , 就是对kotlinpoet的使用 , 比较繁琐且无聊 。
就是将你要生成的语句写出来 , 然后变量用规定字符代替
文章插图
接着就是生成句子 , 将语句里面的规定字符 , 用你的变量去替代就好了
文章插图
结尾其实这个框架写的时候没考虑其全面性和兼容性 , 就打算先写出来试一试 。其实还有很多地方可以修改和扩展 。
今天的文章就到这里 , 感谢您的阅读 , 有问题可以在评论区留言探讨 , 期待与大家共同进步 。喜欢的话不要忘了三连 。大家的支持和认可 , 是我分享的最大动力 。
【Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架】
推荐阅读
- 鹿茸面膜使用方法是什么
- 使用面膜过敏的急救措施是什么
- 拉链拉不下来怎么办?
- Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
- Android开发:当前项目以Module形式引用别的项目的步骤
- MQTT协议使用总结
- 使用Redis时要避免的5个错误
- Linux进程管理
- 白帽黑客如何使用Dirbuster网站目录扫描神器
- 专门针对chrome谷歌浏览器而开发的一款访问插件