- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于我们使用的是协程(使用了 1.3.5),我们有很多崩溃: JobCancellationException - StandaloneCoroutine 被取消 .
我阅读了很多关于这些问题的线程,我在生产中尝试了很多解决方案,但总是发生崩溃。
在我们所有的 View 模型中,我们都使用了 View 模型范围,所以没关系。
但是在我们的数据层中,我们需要启动一个跟踪事件,即触发即忘任务。在第一步中,我们使用了 GlobalScope.launch
.我认为 CancelletationException 是由于这个全局范围造成的,所以我删除了它并使用 SupervisorJob
在数据层中创建了一个扩展。和一个 CoroutineExceptionHandler
:
private val appScope = CoroutineScope(Dispatchers.Default + SupervisorJob())
private val coroutineExceptionHandler by lazy { CoroutineExceptionHandler { _, throwable -> logw("Error occurred inside Coroutine.", throwable) } }
fun launchOnApp(block: suspend CoroutineScope.() -> Unit) {
appScope.launch(coroutineExceptionHandler) { block() }
}
cancelAndJoin
方法?我可以将哪种策略与干净的建筑和这种工作一起使用?
最佳答案
您可以构建一个扩展实用程序来捕获取消异常,并使用它执行您想要的操作:
fun CoroutineScope.safeLaunch(block: suspend CoroutineScope.() -> Unit): Job {
return this.launch {
try {
block()
} catch (ce: CancellationException) {
// You can ignore or log this exception
} catch (e: Exception) {
// Here it's better to at least log the exception
Log.e("TAG","Coroutine error", e)
}
}
}
您可以将扩展与您选择的协程范围一起使用,例如全局范围:
GlobalScope.safeLaunch{
// here goes my suspend functions and stuff
}
或任何 View 模型范围:
myViewModel.viewModelScope.safeLaunch{
// here goes my suspend functions and stuff
}
关于kotlin - JobCancellationException StandaloneCoroutine 被取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60741777/
我注意到一些用户在使用灵活的应用内更新时遇到问题,JobCancellationException: Job was cancelled 被抛出并带有难以理解的堆栈跟踪: at dalvik.syst
最近,我将 Kotlin Coroutines 从实验版升级到 1.1.1,并遇到了新版本中 job.cancel() 工作方式不同的问题。 这是带有实验协程的代码: fun > T.runAsync
由于我们使用的是协程(使用了 1.3.5),我们有很多崩溃: JobCancellationException - StandaloneCoroutine 被取消 . 我阅读了很多关于这些问题的线程,
由于 Kotlin JobCancellationException,我遇到了崩溃。 以下是有关崩溃的详细信息: kotlinx.coroutines.JobCancellationException
安卓工作室 3.6 在一个屏幕上,我通过协程进行轮询,如下所示: fun initPoll() = viewModelScope.launch(Dispatchers.M
我尝试编写一个使用 ktor 的 kotlin 多平台库(android 和 ios)。因此,我在使用 kotlins 协程时遇到了一些问题: When writing tests I always
我正在实现 kotlin coroutines在 MVVM架构以取代我的RxJava依赖。 我的问题 : 注销后(这个细节很重要,因为我在重新开始时没有异常),我有一个 JobCancellation
我是一名优秀的程序员,十分优秀!