首发于公众号: 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}")
}
}
Kotlin学习笔记之 13 基础操作符run、with、let、also、apply
网友评论