- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
安卓工作室 3.6
在一个屏幕上,我通过协程进行轮询,如下所示:
fun initPoll() =
viewModelScope.launch(Dispatchers.Main) {
var errorMessage = ""
try {
while (true) {
val balanceValue: BigDecimal = TransportService.getBonuse()
delay(1000)
}
} catch (e: CancellationException) {
Debug.e(
TAG,
"initPoll: error_message = ${e.message}, ex = $e"
)
} catch (e: Throwable) {
Debug.e(
TAG,
"initPoll: error_message = ${e.message}, ex = $e"
)
}
}
suspend fun getBonuse() =
withContext(Dispatchers.IO) {
// some code here
} // Dispatchers.Main
import kotlinx.coroutines.*
private lateinit var poll: Job
override fun onPause() {
super.onPause()
poll.cancel()
}
override fun onResume() {
super.onResume()
poll = mainViewModel.initPoll()
}
02-12 11:34:17.115 E/com.myproject.MainViewModel(17685): initPoll: error_message = StandaloneCoroutine was cancelled, ex = kotlinx.coroutines.JobCancellationException: StandaloneCoroutine was cancelled; job=StandaloneCoroutine{Cancelling}@aa5d4a1
最佳答案
您当前的协程实现受限于 ViewModel 的生命周期,并且 viewModelScope
cancels after ViewModel has been cleared up (打开另一个 Activity 后会发生什么)。
因此,如果您的目标是在导航到另一个 Activity 后停止轮询奖金,则无需使用 poll.cancel()
隐式停止协程。 , 让 viewModelScope
做它的工作。否则,如果您想在 ViewModel 被清除后继续轮询,请考虑使用一些上层(可能是全局)范围。
如果你想避免JobCancellationException
在您的代码中 - 考虑使用 CoroutineExceptionHandler 而不是 try/catch作为协程上下文的补充,它旨在处理协程中未捕获的异常并忽略已取消的异常。
关于android - 转到另一个屏幕时抛出 kotlinx.coroutines.JobCancellationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60185192/
我注意到一些用户在使用灵活的应用内更新时遇到问题,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
我是一名优秀的程序员,十分优秀!