Kotlin学习笔记之 33 协程 & Retrofit

512 阅读1分钟

首发于公众号: DSGtalk1989

33.协程 & Retrofit

本质上来说,所有的Rxjava的情况我们都可以通过协程来实现,这边以利用最广泛的网络请求为例

首先添加相关依赖

implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'

接口定义为如下,返回类型为Deferred

@GET("newsflash")
fun getWeatherDataByCoroutine(
   @Query("per_page") per_page: Int
): Deferred<Response<KrResponse>>

添加callAdapter

.addCallAdapterFactory(CoroutineCallAdapterFactory())

最终调用,起全局协程,并通过await方法实现同步请求

GlobalScope.launch {
   try {
       Log.e(
           "xxxx",
           "data  :   ${serviceManager.weatherService.getWeatherDataByCoroutine(3).await().body()!!.data.items[0]}"
       )
   } catch (e: Exception) {
       Log.e("xxxxx", "e  :  ${e.message}")
   }
}