Kotlin ConflatedBroadcastChannel.offer()不起作用?

问题描述 投票:0回答:1

我正在通过MyRepository.myConflatedChannel.offer(myvalue)发送值。

然后我希望在ViewModel的collect { }onEach { }块中接收它。但是,两个函数都不被调用。好像什么都没有沿着ConflatedBroadcastChannel传递。

有人看到过类似的问题吗?

kotlin kotlin-coroutines android-viewmodel coroutinescope
1个回答
0
投票
[如果使用ConflatedBroadcastChannel,则可以使用OpenSubscription获得ReceiveChannel,也可以将其表示为流(使用asFlow)。

注意,consumeconsumeEach是终端,它们执行一个动作,然后在执行块后取消通道。参见this

第一种情况:

val receivingChannel = MyRepository.myConflatedChannel.openSubscription() // then you can consume values using for example a for loop, e.g.: launch { for (value in receivingChannel) { // do something } }

第二种情况:

val receivingFlow = MyRepository.myConflatedChannel.asFlow()

launch {
    receivingFlow.collect {
        // do something
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.