简介
目前该框架的使用已经很广泛了,那么在kotlin中具体是怎么实现的呢,下面介绍下对其的封装,代码Github地址
项目依赖
implementation 'com.squareup.okhttp3:okhttp:3.8.1'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.1'
// retrofit
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
//gson
implementation 'com.google.code.gson:gson:2.8.1'
implementation 是android studio 3.0 里 依赖 的gradle 版本语法。相当于之前的 compile
ServiceFactory代码
用object 声明单例类 ServiceFactory, getLogInterceptor函数获取Http 日志拦截器,serviceActivity 通过懒加载机制 在被第一次使用的时候初始化,通过createRetrofitService函数创建并赋值。
ServiceActivity 代码
通过依赖注入的方式实现接口的声明,@POST声明post接口,@Body 为请求体。写法与java基本一致
封装ActivitySource代码
这里可以看到封装的较为复杂,它实现了 在java中的 CallBack 回掉,和相当于该方法的递归实现。详细解释下:
封装三个参数:
1. paramActivityList 这个就是个普通类,跟java没什么区别
2. success 这是个方法参数,方法参数还包含了两个参数,一个是正常接口返回ResultActivityList,二个是Retry方法参数是用来重复调用该方法的,这里是为了在页面给用户弹出重试按钮的时候,重新请求该接口的实现。
3. fail 这个参数实现的原理同上
调用
下面这个图: 我不知道我要表达的意思 你看明白没,就是在getActivityList 实现 retry函数,在别处调用的时候 可以 主动调用 retry函数 来实现 该函数的 一次递归。
封装总结
你也看到,在kotlin语言中 对于callBack的返回 完全不用定义接口,而且还可以实现更复杂的一次递归操作,这完全由于kotlin语言的特性才能实现,如果在java中实现同样的功能 真不知道要写多少代码,对吧,不信,你去试试。本次就学到这,下期再见。
网友评论