Android Kotlin Channel的关闭

Posted 安果移不动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Kotlin Channel的关闭相关的知识,希望对你有一定的参考价值。

    @Test
    fun `test close channel`() = runBlocking<Unit> 
        val channel = Channel<Int>(3)
        //生产者
        val producer = GlobalScope.launch 
            List(3) 
                channel.send(it)
                println("send $it")
            
            channel.close()
            println("""close1. 
                | - CloseForSend isClosedForSend $channel.isClosedForSend 
                | - CloseForReceiver $channel.isClosedForReceive""".trimMargin())

        

        val consumer = GlobalScope.launch 
                for(element in channel)
                    println("receive $element")
                    delay(1000)
                
            println("""close2. 
                | - CloseForSend isClosedForSend $channel.isClosedForSend 
                | - CloseForReceiver $channel.isClosedForReceive""".trimMargin())
        


        joinAll(producer, consumer)
    

关闭不会被立即执行

要等到结束后才能完全关闭

 

以上是关于Android Kotlin Channel的关闭的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin NullPointer Exception Android [关闭]

使用Kotlin关闭/隐藏Android软键盘

Kotlin 协程Channel 通道 ① ( Channel#send 发送数据 | Channel#receive 接收数据 )

Kotlin 协程Channel 通道 ① ( Channel#send 发送数据 | Channel#receive 接收数据 )

Kotlin协程-Channel基础

使用 Kotlin Channel 进行单元测试