kotlin async无法编译

时间:2018-06-18 08:01:08

标签: kotlin kotlinx.coroutines kotlin-experimental

以下代码无法编译,但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

4 个答案:

答案 0 :(得分:1)

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

看起来您使用的是旧版coroutines库,特别是context没有默认值的版本。​​

答案 1 :(得分:1)

要在Android应用中使用协程,必须按照here所述向kotlinx-coroutines-android添加依赖项。

答案 2 :(得分:0)

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

答案 3 :(得分:-2)

Kotlin 1.1尝试使用.specific-class > .mat-expansion-indicator, .mat-expansion-indicator:after { color: red !important; } 方法:

async{}

我建议你阅读question