Kotlin安卓实战之Retrofit + OkHttp

作者: i校长 | 来源:发表于2017-07-01 15:04 被阅读683次

    简介

    目前该框架的使用已经很广泛了,那么在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中实现同样的功能 真不知道要写多少代码,对吧,不信,你去试试。本次就学到这,下期再见。

    相关文章

      网友评论

        本文标题:Kotlin安卓实战之Retrofit + OkHttp

        本文链接:https://www.haomeiwen.com/subject/ckawcxtx.html