如果我在RxJava中扩展Observable<>
,则可以覆盖OnDispose()
,并执行清理工作,例如为垃圾收集器清除内容。
OnDispose()
的任何订阅时,都会调用 Observable<>
。
但是,我似乎找不到协程频道的任何等效内容。
我知道channel.close(),但这并不相同。
是否有传播途径
答案 0 :(得分:1)
我假设您在谈论RxJava中的doOnDispose
。在这种情况下,您正在将元素发送到通道,并想知道下游何时拥有cancelled通道。如果您在单个函数中构建生产代码,则只需使用try/finally
:
val channel = produce {
// channel producing code is here
try {
// this example is sending 10 ints, but it can be any other code
repeat(10) { send(it) }
} finally {
// doOnDispose here!
}
}
如果您的发送代码已散布,并且您希望收到取消的回调,则可以使用SendChannel.invokeOnClose