Android 协程 不能被取消的任务

Posted 安果移不动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 协程 不能被取消的任务相关的知识,希望对你有一定的参考价值。

正确示范

    /**
     * 不能被取消的任务
     */
    @Test

    fun `test cancel with NonCancellable`() = runBlocking<Unit> 
        val job = launch 
            try 
                repeat(1000)  i ->
                    println("job:I'm sleeping $i...")
                    delay(500L)
                
             finally 
               withContext(NonCancellable)
                   println("job : I'm running finally")
                   delay(1000L)
                   println("巴拉巴拉变")
               
            
        

        delay(1300)
        println("main:I'm tired of waiting")
        job.cancelAndJoin()
        println("main:Now i can quit.")
    

 如果不加 

withContext(NonCancellable)

是无法保证里面的延时任务能一定执行完成的。。甚至就不会打印出来巴拉巴拉变

以上是关于Android 协程 不能被取消的任务的主要内容,如果未能解决你的问题,请参考以下文章