我对协程还比较陌生,现在我正在尝试实现Launch协程的行为:
launch(UI) {
val v1 = someDeferredType
val v2 = v1.await()
val v3 = v2.text
}
在上面的例子中,v3将等待v2执行,然后运行而不阻塞主线程。虽然这很好,但这会在我的调用Activity/Fragment中引入Deferred类型和协程逻辑。
我想让我的Activity/Fragment摆脱特定的实现细节,类似于这样:
fun getResponseString() : String {
launch(UI) {
val v1 = someDeferredType
val v2 = v1.await()
val v3 = v2.text
}
return v3 //This is the actual String which I need to be returned
}
这样我就可以像普通函数一样从我的活动中调用getResponseString()。
到目前为止,我所遇到的唯一选择是使用runBlocking协程,但这会完全阻塞主线程,不像launch。
也许我错过了什么,或者使用Kotlin中的协程无法做到这样的事情?