Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin将dbroadcastChannel.offer()与';不行?_Kotlin_Kotlin Coroutines_Android Viewmodel_Coroutinescope - Fatal编程技术网

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相同,它是一个在接收频道上的。如果我只使用常规的
广播频道怎么办?