作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用例
消耗 T
项的 Android 片段来自 ReceiveChannel<T>
.一旦消耗,T
s 应该从 ReceiveChannel<T>
中删除.
我需要一个 ReceiveChannel<T>
支持从中消费元素。它应该用作 FIFO 队列。
我目前从我的用户界面附加到 channel ,例如:
launch(uiJob) { channel.consumeEach{ /** ... */ } }
我通过调用
uiJob.cancel()
进行分离.
val channel = Channel<Int>(UNLIMITED)
channel.send(1)
channel.send(2)
// ui attaches, receives `1` and `2`
channel.send(3) // ui immediately receives `3`
// ui detaches
channel.send(4)
channel.send(5)
// ui attaches, receiving `4` and `5`
不幸的是,当我与 channel 分离时, channel 已关闭。这会导致
.send(4)
和
.send(5)
因为 channel 关闭而引发异常。我希望能够从 channel 中分离并让它保持可用。我怎样才能做到这一点?
Channel<Int>(UNLIMITED)
非常适合我的用例,除了取消订阅时关闭 channel 。我希望 channel 保持开放。这可能吗?
最佳答案
Channel.consumeEach
方法调用 Channel.consume
在文档中有这一行的方法:
Makes sure that the given block consumes all elements from the given channel by always invoking cancel after the execution of the block.
consume[Each]
.例如,您可以这样做:
launch(uiJob) { for (it in channel) { /** ... */ } }
关于kotlin - 耗材 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50768585/
用例 消耗 T 项的 Android 片段来自 ReceiveChannel .一旦消耗,T s 应该从 ReceiveChannel 中删除. 我需要一个 ReceiveChannel支持从中消费元
我刚刚了解了IAP Cracker的存在,并试图找出在我的应用中验证IAP购买的最佳方法。 我无法确定的是IAP Cracker是否可以处理“消耗性”商品。如果没有,我没有什么可担心的。 这是维护/验
我被 Google In App v3 卡住了 - 我测试了没有消费的购买(例如,当应用在购买和消费之间崩溃时) - 现在我找不到出路。 如果我再次尝试购买,它会显示“您已经拥有该商品”。但是当我测试
我是一名优秀的程序员,十分优秀!