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 协程Channel 通道 ① ( Channel#send 发送数据 | Channel#receive 接收数据 )
Kotlin 协程Channel 通道 ① ( Channel#send 发送数据 | Channel#receive 接收数据 )