【发布时间】:2019-09-01 14:52:11
【问题描述】:
在活动完成后在 ViewModel 的 onCleared() 中停止 jobs 会显示 JobCancellationException: Job is being cancelled 并保持应用程序冻结崩溃:
从 Android 中的 ViewModel 的 onCleared() 取消所有 kotlin 协程待处理作业的正确方法是什么
我在 viewModel 中的代码:
private val job = SupervisorJob()
private val uiScope = CoroutineScope(Dispatchers.Main + job)
uiScope.launch {
try {
repeat(152212000001) { it ->
try {
Log.d("Timer : ", it)
delay(1000)
} catch (e: Exception) {
e.printStackTrace()
}
}
} catch (e: CancellationException) {
e.printStackTrace()
}
}
ViewModel 内部:
override fun onCleared() {
job.cancel()
super.onCleared()
}
【问题讨论】:
标签: android kotlin kotlin-android-extensions kotlin-extension kotlin-coroutines