如果我Observable<>
在 RxJava 中扩展 an,我可以覆盖OnDispose()
并执行清理,例如为垃圾收集器清除东西。
OnDispose()
每当处理对此的任何订阅时都会调用Observable<>
。
但是,我似乎找不到任何与协程通道等效的东西。
我知道 channel.close(),但这不一样。
有什么方法可以传播吗
- 暂停对 Channel 的协程取消;或者
- 订阅处置/取消频道?
如果我Observable<>
在 RxJava 中扩展 an,我可以覆盖OnDispose()
并执行清理,例如为垃圾收集器清除东西。
OnDispose()
每当处理对此的任何订阅时都会调用Observable<>
。
但是,我似乎找不到任何与协程通道等效的东西。
我知道 channel.close(),但这不一样。
有什么方法可以传播吗
我假设你在谈论doOnDispose
RxJava。在这种情况下,您正在向通道发送元素,并且想知道下游何时取消了通道。如果您在单个函数中构建您的生产代码,那么您可以简单地使用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