【发布时间】:2020-07-16 22:17:58
【问题描述】:
我正在尝试将我的 MVP 应用程序从 Rx 迁移到 Kotlin 的协程(我是新手)。
在进行一些试验时,我发现任何具有以下结构的代码都无法使用 org.jetbrains.kotlin.codegen.CompilationException: Back-end (JVM) Internal error: wrong bytecode generated 进行编译
val scope = CoroutineScope(Dispatchers.IO)
fun a(i: Int) {
scope.launch {
withContext(Dispatchers.Main) {
val b = i + 1
}
}
}
似乎尝试访问withContext 内的参数i 是问题所在。如果我将i 的值分配给功能块内的其他东西并使用它,它就可以正常工作。但是我觉得我在这里可能做错了什么,呵呵
这存在于 Presenter 中。我的想法是使用 IO 调度程序的“启动”来调用存储库并从数据库中获取一些数据,然后使用它来更新主调度程序中的 UI。对我来说它看起来很可靠,但我有点担心,因为显然没有其他人遇到同样的问题,这可能意味着出于某种原因应该避免我尝试实施的这种模式。
有什么线索吗?
【问题讨论】:
标签: android kotlin kotlin-coroutines