Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架( 三 )


Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架

文章插图
 

Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架

文章插图
 
这里不好解释 , 我直接画图了
Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架

文章插图
 
CoroutineDataFetcher { apiService.getData() }.startFetchData()
apiService.getData() 就是发起网络请求,看一下CoroutineDataFetcher
Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架

文章插图
 
startFetchData() , 就是根据传入的缓存参数 , 去找到对应的缓存策略发起Http请求的方法 , 很简单看一看就好
Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架

文章插图
 
代码的分析通过上面分析我们可以知道 , 你新写一个注解 , 其实就只需要编写两个类就好了
  • 一个继承 RepositoryMethod 的参数收集器
  • 一个继承 AbsFuncBuilder 的方法具体内容输出器
所以我们直接看到AutoFlowApi的这两个类
AutoFlowMethod
可以说和 AtoMethod 一模一样了 , 都是收集默认参数 不一样的地方就是下面的一些配置
Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架

文章插图
 
通过重写 AbsFuncBuilder 的暴露出来的配置方法 , 去修改方法的配置信息 , 比如图中的
  • isNullable,方法返回值能否为null
  • isNeedSuspend,方法是否是需要suspend关键字
  • isNeedReturnType,方法是否需要返回值

Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架

文章插图
 
AutoFlowApiFuncBuilder
这个是AutoFlowApi注解最关键的方法了 , 里面代码比较多 , 但是也没什么好解释的 , 就是对kotlinpoet的使用 , 比较繁琐且无聊 。
就是将你要生成的语句写出来 , 然后变量用规定字符代替
Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架

文章插图
 
接着就是生成句子 , 将语句里面的规定字符 , 用你的变量去替代就好了
Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架

文章插图
 
结尾其实这个框架写的时候没考虑其全面性和兼容性 , 就打算先写出来试一试 。其实还有很多地方可以修改和扩展 。
今天的文章就到这里 , 感谢您的阅读 , 有问题可以在评论区留言探讨 , 期待与大家共同进步 。喜欢的话不要忘了三连 。大家的支持和认可 , 是我分享的最大动力 。

【Android开发:使用Kotlin+协程+自定义注解+Retrofit的网络框架】


推荐阅读