kotlin 协程。作用域的取消,兄弟协程的取消,协程取消会异常
Posted 安果移不动
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kotlin 协程。作用域的取消,兄弟协程的取消,协程取消会异常相关的知识,希望对你有一定的参考价值。
作用域的取消
private fun testScopeCancel() = runBlocking<Unit>
val scope = CoroutineScope(Dispatchers.Default)
scope.launch
delay(1000)
Log.e(TAG, "job1 finish")
scope.launch
delay(1000)
Log.e(TAG, "job2 finish")
delay(100)
scope.cancel()
整个协程都会被取消,
如果我们想仅仅取消部分协程呢?
private fun testBrotherScopeCancel() = runBlocking<Unit>
val scope = CoroutineScope(Dispatchers.Default)
val job1 = scope.launch
delay(1000)
Log.e(TAG, "job1 finish")
val job2 = scope.launch
delay(1000)
Log.e(TAG, "job2 finish")
delay(100)
job1.cancel()
Log.e(TAG, "协程的作用域要被取消啦")
job是可以取消的,同理作用域也可以进行取消操作。
private fun cancelilationExcepiton() = runBlocking
val job1 = GlobalScope.launch
try
delay(1100)
Log.e(TAG, "job1 finish")
catch (e: Exception)
e.printStackTrace()
delay(100)
job1.cancel(CancellationException("取消"))
job1.join()
以上是关于kotlin 协程。作用域的取消,兄弟协程的取消,协程取消会异常的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程协程取消 ① ( 协程作用域取消 | 协程作用域子协程取消 | 通过抛出异常取消协程 | Job#cancel 函数 | 自定义异常取消协程 )