kotlin 异步不编译

kotlin async doesn't compile

以下代码无法编译,尽管 documentation 说它应该像这样简单:

override fun onResume() {
    super.onResume()
    async {
        Log.d("foo", "async")
    }
}

错误是:

...kt: (31, 9): None of the following functions can be called with the arguments supplied:
@Deprecated public fun <T> async(context: CoroutineContext, start: Boolean, block: suspend CoroutineScope.() -> ???): Deferred<???> defined in kotlinx.coroutines.experimental
public fun <T> async(context: CoroutineContext, start: CoroutineStart = ..., block: suspend CoroutineScope.() -> ???): Deferred<???> defined in kotlinx.coroutines.experimental

async{} 方法已弃用 Kotlin 1.1 try:

override fun onResume() {
    super.onResume()
    doAsync {
        Log.d("foo", "async")
    }
}

我建议你阅读这篇文章

如果您将列出的签名与 https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.experimental/async.html 进行比较,那就大不相同了。

看来您使用的是旧版本的协程库,尤其是 context 没有默认值的协程库。

为了在 android 应用程序中使用协程,必须按照 here.

中的说明向 kotlinx-coroutines-android 添加依赖项

此外,async 函数只能在协程或挂起函数中使用。因此,即使您具有正确的依赖项,如果您尝试在 onResume() 中使用 async,您的代码也无法编译。