ConflatedBroadcastChannel

ConflatedBroadcastChannel

我通过MyRepository.myConflatedChannel.offer(myvalue)发送一个值。

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

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

最佳答案

确保正确处理接收值。

如果使用ConflatedBroadcastChannel,则可以使用OpenSubscription来获取ReceiveChannel,也可以将其表示为流(使用asFlow)。

注意consumeconsumeEach是终端,它们执行一个 Action ,然后在执行块后取消通道。参见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
    }
}

关于kotlin - Kotlin ConflatedBroadcastChannel.offer()不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61690683/

10-10 01:55