【发布时间】:2020-11-29 18:45:30
【问题描述】:
我是 android 和 kotlin 协程的新手。我一直在使用带有协程的 okhttp API lib。下面是代码:
应用扩展类:
class App: Application() {
companion object {
val SCOPE = CoroutineScope(Dispatchers.Main)
}
}
在 MainActivity 类中:
App.SCOPE.launch {
val results = Api.get(url)
UpdateUI(results)
}
API 类:
suspend fun get(url: String): String = withContext(Dispatchers.IO) {
try {
val data = httpClient.newCall(request).execute()
return@withContext data.body!!.string()
} catch (e: Exception) {
throw java.lang.Exception(e.message)
}
}
这很好,但这是最好的方法吗?
【问题讨论】:
-
通常不鼓励使用全局作用域,您应该使用您的活动lifecycleScope,以便在您的活动被销毁时优雅地取消您的调用。
标签: android kotlin kotlin-coroutines coroutine