当执行到第一个可挂起的函数时,Kotlin协程作业将被取消。但是我希望这种取消发生在我想要的某些点上,而不是任何可挂起的函数调用。我想在某些点上检查取消并手动完成作业,就像线程中断一样。假设一个作业正在运行,并达到了一个延迟函数,然后发生了取消,我想捕捉取消异常并设置标志running = false,然后继续执行作业,并在我想要的地方完成作业。考虑到我希望延迟函数调用在取消发生时被取消,并且不等待延迟。我还想提一下,我正在Android Studio中做这件事。
running = false
3vpjnl9f1#
您是否尝试过invokeOnCompletion函数在作业取消时执行任何需要的操作?应该是这样的:
invokeOnCompletion
val job = launch { ... } job.invokeOnCompletion { if (job.isCancelled) { //Do whatever you need here when the job is cancelled ... } }
如果你需要在任务取消后继续执行它,那么就用某种检查点来设计它,然后你就可以设置了。
1条答案
按热度按时间3vpjnl9f1#
您是否尝试过
invokeOnCompletion
函数在作业取消时执行任何需要的操作?应该是这样的:
如果你需要在任务取消后继续执行它,那么就用某种检查点来设计它,然后你就可以设置了。