【发布时间】:2023-02-09 02:35:17
【问题描述】:
我正在踩Channel缓冲.我正在学习轮询项目通过Channel。当我发送项目时,它不会receive()所有项目。我不明白为什么?
class QueueViewModel(private val application: Application) : AndroidViewModel(application) {
val basketChannel = Channel<String>(Channel.UNLIMITED)
init {
startPolling()
}
fun addItems() {
addItemInChannel(100L, "Item 1")
addItemInChannel(1000L, "Item 2")
addItemInChannel(400L, "Item 3")
addItemInChannel(500L, "Item 4")
}
fun addItemInChannel(delay: Long, item: String) {
viewModelScope.launch {
delay(delay)
logE("basketChannelItem added -> $item")
basketChannel.send(item)
}
}
fun startPolling() {
viewModelScope.launch {
Log.e(TAG, "Starting Polling")
for (element in basketChannel) {
logE("basketChannel Item poll -> $element")
basketChannel.receive()
}
}
}
}
我在活动中打电话给addItems()..
输出
其他物品哪里去了?
【问题讨论】:
标签: android kotlin kotlin-coroutines android-viewmodel