- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近,我将 Kotlin Coroutines 从实验版升级到 1.1.1,并遇到了新版本中 job.cancel()
工作方式不同的问题。
这是带有实验协程的代码:
fun <R : Any, T : Deferred<R>> T.runAsync(
job: Job,
onSuccess: (result: R) -> Unit,
onFailed: (errorMsg: String?) -> Unit) {
launch(UI, parent = job) {
try {
val result = this@runAsync.await()
onSuccess(result)
} catch (e: Exception) {
onFailed(e.message)
}
}
}
这是 1.1.1:
fun <R : Any, T : Deferred<R>> T.runAsync(
job: Job,
onSuccess: (result: R) -> Unit,
onFailed: (errorMsg: String?) -> Unit) {
GlobalScope.launch(Dispatchers.Main + job) {
try {
val result = withContext(Dispatchers.IO) {
this@runAsync.await()
}
onSuccess(result)
} catch (e: Exception) {
onFailed(e.message)
}
}
}
例如:
我的 fragment 在协程运行期间被销毁并调用了 job.cancel()
。
在实验性协程中,onSuccess()
和 onFailed()
都不会被调用。
在 1.1.1 中:onFailed()
因为捕获到 JobCancellationException
而被调用
我想到了添加catch (e: JobCancellationException)
,但这是不可能的:
/**
* @suppress **This an internal API and should not be used from general code.**
*/
internal expect class JobCancellationException(
那么,问题是:如何处理/忽略 JobCancellationException
?
最佳答案
您 try catch 父类(super class) CancellationException
,它是公共(public) API 的一部分。
请注意,如果某事抛出 CancellationException
,您通常会重新抛出它,以便上游对象收到有关取消的通知。参见 Cancellation is Cooperative
关于android - 如何忽略 JobCancellationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54870443/
我注意到一些用户在使用灵活的应用内更新时遇到问题,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
我是一名优秀的程序员,十分优秀!