Ish*_*ngh 5 java android kotlin kotlin-coroutines kotlin-flow
我想在现有的 Java 类中使用下面的代码,因为现在编写不可能在Kotlin中转换整个类:
viewLifecycleOwner.lifecycleScope.launchWhenStarted {
viewModel.tasksEvent.collect { event ->
}
}
Run Code Online (Sandbox Code Playgroud)
请建议最好的方法。我知道AsyncTask
已被弃用。
由于lifecycleScope
它是一个扩展函数,因此您需要使用与 java 不同的语法来调用它:
LifecycleOwnerKt.getLifecycleScope(this)
Run Code Online (Sandbox Code Playgroud)
this
你的活动、片段等在哪里?
之后,您可以将该生命周期作用域传递给新的 kotlin 类并通过回调返回结果,如下所示:
KotlinClass.kt
class KotlinClass {
fun useCoroutineScope(
scope: LifecycleCoroutineScope,
callback: (SomeType) -> Unit
) {
scope.launchWhenCreated {
// Computation code...
callback(someValue)
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
如果我没记错的话,Kotlin 协程不能与Java互操作。要使用Kotlin 协程,请遵循 Kotlin 代码,不要尝试在Java中使用协程。尝试使用上下文菜单项Convert Java File to Kotlin File将 Java 文件转换为 Kotlin 文件。或者将协程代码移动到单独的Kotlin文件中。
归档时间: |
|
查看次数: |
2316 次 |
最近记录: |