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
,您的代码也无法编译。
以下代码无法编译,尽管 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
,您的代码也无法编译。