【问题标题】:JVM error when compiling Kotlin function with coroutines scopes使用协程作用域编译 Kotlin 函数时出现 JVM 错误
【发布时间】: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


    【解决方案1】:

    经过一番摆弄,我发现问题出在我的 kotlin 插件版本上。

    我将它从 1.3.50 更改为 1.3.72 和...魔术:D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-16
      • 2020-04-17
      • 2020-09-19
      • 2019-07-16
      • 2019-06-16
      • 2013-06-16
      • 2013-10-28
      • 1970-01-01
      相关资源
      最近更新 更多