【发布时间】:2020-05-04 12:23:08
【问题描述】:
由于 Kotlin JobCancellationException,我遇到了崩溃。
以下是有关崩溃的详细信息:
kotlinx.coroutines.JobCancellationException: Job was cancelled; job=SupervisorJobImpl{Cancelling}@131dbe3
我只知道 SupervisorJobImpl 是针对 ViewModelScope 的,当 ViewModel 生命周期结束时,它会被调用方法 cancel。
我对异常感到非常困惑,因为 Kotlin 协程只会忽略异常,但它被抛出并导致应用程序崩溃。如果它有堆栈,我可以弄清楚,但它没有,告诉我作业被取消了。
我在异常上花了大约 3 天多的时间,但只是不知道。
我看了视频: KotlinConf 2019: Coroutines! Gotta catch 'em all! by Florina Muntenescu & Manuel Vivo,我发现如果scope被取消了,如果你在Deferred上调用await,它会抛出异常,但是我发现取消的scope上没有await .
那么有人可以向我展示一些可能导致相同异常并使应用程序崩溃的代码吗?谢谢,那里。
【问题讨论】:
-
您是否手动取消任何内容?您是否正在与取消的工作或范围进行交互?很难说这里有什么问题。
-
我展示了所有的 ViewModel#aunch 方法,发现无处调用手动取消,只是 ViewModel 内部调用。
-
你能显示完整的堆栈跟踪吗?
-
没有更多的堆栈跟踪,这就是我发布问题的原因。
-
要获得完整的堆栈跟踪,you need to enable coroutines debug mode。