kotlin-coroutines-retrofit

Kotlin 协程的await()配合 Retrofit 用起来是真的爽,省掉一堆回调写法,代码更干净。你只要引入kotlinx-coroutines-retrofit库,就能把Call变成挂起函数,直接在协程里用同步风格写异步求,简洁还不容易出错。

网络求用 Retrofit 的你,肯定对enqueue()那堆回调不陌生吧?现在只要配合协程的await(),代码能清爽不少:

interface ApiService {
  @GET("api/data")
  suspend fun getData(): Response
}

是不是一眼看明白?调用也超简单,直接协程里开干:

lifecycleScope.launch(Dispatchers.IO) {
  try {
    val response = apiService.getData().await()
    if (response.isSuccessful) {
      val data = response.body()
      withContext(Dispatchers.Main) {
        updateUI(data)
      }
    } else {
      handleErrorResponse(response.code())
    }
  } catch (e: Exception) {
    handleException(e)
  }
}

这样一改,顺序逻辑清楚多了,也不用担心 UI 线程被卡死。出错就抛异常,起来更直观。搭配lifecycleScopeDispatchers.IO,也不会阻塞主线程。

如果你还在用enqueue()那一套,可以试试await(),是和 MVVM 架构、Jetpack 组件一起用,体验会更丝滑。顺手推荐几个相关资料:

zip
kotlin-coroutines-retrofit-master.zip 预估大小:16个文件
folder
kotlin-coroutines-retrofit-master 文件夹
file
gradlew 6KB
file
LICENSE.txt 11KB
file
build.gradle.kts 4KB
folder
src 文件夹
folder
test 文件夹
folder
kotlin 文件夹
folder
ru 文件夹
folder
gildor 文件夹
folder
coroutines 文件夹
folder
retrofit 文件夹
file
ResultTest.kt 3KB
folder
util 文件夹
file
NullBodyCall.kt 2KB
file
MockedCall.kt 3KB
file
CallAwaitTest.kt 9KB
folder
main 文件夹
folder
kotlin 文件夹
folder
ru 文件夹
folder
gildor 文件夹
folder
coroutines 文件夹
folder
retrofit 文件夹
file
CallAwait.kt 4KB
file
Result.kt 3KB
folder
gradle 文件夹
folder
wrapper 文件夹
file
gradle-wrapper.properties 202B
file
gradle-wrapper.jar 54KB
file
README.md 8KB
file
gradlew.bat 3KB
file
.gitignore 59B
file
CHANGELOG.md 4KB
file
settings.gradle.kts 91B
zip 文件大小:75.39KB