我通过MyRepository.myConflatedChannel.offer(myvalue)
发送一个值。
然后,我希望在ViewModel的collect { }
或onEach { }
块中收到它。但是,两个函数都不被调用。好像什么都没有沿着ConflatedBroadcastChannel传递。
有人看到过类似的问题吗?
最佳答案
确保正确处理接收值。
如果使用ConflatedBroadcastChannel,则可以使用OpenSubscription来获取ReceiveChannel,也可以将其表示为流(使用asFlow)。
注意consume
和consumeEach
是终端,它们执行一个 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/