Kotlin将dbroadcastChannel.offer()与';不行?
我正在通过Kotlin将dbroadcastChannel.offer()与';不行?,kotlin,kotlin-coroutines,android-viewmodel,coroutinescope,Kotlin,Kotlin Coroutines,Android Viewmodel,Coroutinescope,我正在通过MyRepository.myConflatedChannel.offer(myvalue)发送一个值 然后我希望在ViewModel中的collect{}或onEach{}块中接收它。但是,这两个函数都没有被调用。这就好像没有什么东西被传下了这条混为一谈的海峡 有人见过类似的问题吗?确保正确处理接收值 如果使用ConflatedBroadcastChannel,则可以使用获取或将其表示为流(with) 请注意,消费和消费每个都是终端,它们执行一个操作,然后在执行块后取消通道。看 第一
MyRepository.myConflatedChannel.offer(myvalue)
发送一个值
然后我希望在ViewModel中的collect{}
或onEach{}
块中接收它。但是,这两个函数都没有被调用。这就好像没有什么东西被传下了这条混为一谈的海峡
有人见过类似的问题吗?确保正确处理接收值 如果使用ConflatedBroadcastChannel,则可以使用获取或将其表示为流(with) 请注意,
消费
和消费每个
都是终端,它们执行一个操作,然后在执行块后取消通道。看
第一种情况:
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
}
}
您是否通过
openSubscription
呼叫或consume
呼叫获得了ReceiveChannel?您是否将此频道转换为流?我认为,collect
只适用于流。如果你试过使用Poll()
它是Offer()
@animeshahu流的同步对应物。collect
与consume
@IgorGanapolsky相同,它是一个在接收频道上的。如果我只使用常规的广播频道怎么办?