1

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

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
4

4 回答 4

2

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

看起来您正在使用旧版本的协程库,特别是context没有默认值的库。

于 2018-06-18T20:26:58.347 回答
2

为了在 android 应用程序中使用协程,必须按照此处kotlinx-coroutines-android所述添加依赖项。

于 2018-07-01T09:44:16.977 回答
0

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

于 2018-12-28T23:52:19.550 回答
-3

async{}方法已从Kotlin 1.1中弃用尝试:

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

我建议你阅读这个问题

于 2018-06-18T08:09:21.677 回答