如果为RxJava主题进行了onComplete调用,我是否需要再次手动退订?

考希克·戈帕尔

在我的片段中使用RxJava ReplaySubject

我试图以某种方式使用ReplaySubject,我希望Subject执行一个过程直到完成(可能超出了片段的寿命)。

完成此过程后,我想释放资源(据我所知),该资源是通过在注册观察者(在我的情况下,是主题本身)时取消订阅来完成的。

在这个github问题中,线程@benjchristensen说:

如果它是一个Observable,则应发出onCompleted并完成。

如果它是观察者,则它应该从调用Observable.subscribe时收到的订阅中取消订阅,这将使Observable有机会关闭和清理。

如果它是一个主题-既是观察者又是可观察者-行为是什么?如果我在该主题上调用onComplete,这是否基本上意味着订阅已停止,因此我无需通过注册观察者来手动取消订阅我得到的订阅?

乔内斯

主题是上可观察到的,允许你饲料的顶部相对较薄的层onNext()onCompleted()onError()从外部可观察源呼叫。他们的取消订阅行为与可观察者相同。如果在主题上调用onCompleted()onError(),则订阅者将被取消订阅。无需调用unsubscribe()从返回的订阅Observable.subscribe()

对于ReplaySubject,请注意,直到对资源进行垃圾收集后,才会清理资源。即使在onCompleted()上被呼叫之后ReplaySubject,订户仍然可以订阅,并且它将接收所有原始onNext()onCompleted()onError()在订阅之前进行的呼叫。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我需要手动退订吗?-角度8

获取手动设置的HttpResponseMessage Content值(在代码中进行了硬编码)

使用Backbone.Marionette进行事件管理-我是否需要手动调用stopListening以获得子视图?

我是否需要在OC中手动调用“ CGPathRelease”?

是否无法确定函数是否是生成器函数(如果已对.bind()进行了调用)?

我是否需要手动销毁对象(例如pixmap)?

如果已经对计算机进行了故障转移,我们可以再次进行最终故障转移吗?

我如何手动为FileSystemWatcher进行RaiseEvent

反应:是否需要手动记忆?

是否对JavaScript引擎尾部调用(TCO)进行了优化?

对于良好的编码习惯,如果我们已经在method1中进行了验证,那么我们是否仍需要在method2中再次验证数据,而method1已将该数据传递给method2?

iTextSharp:通过对行进行计数来手动分页表格,但是如果换行了怎么办?

如果数据库关闭了连接,是否需要手动关闭它?

如果使用Glew,是否需要手动处理所有这些代码?

我需要检查密码是否正确,但已在数据库中进行了哈希处理

同类型的placement-new是否还需要手动调用析构函数?

如果我创建一个原子变量,线程之间是否对原子变量进行了所有操作?

是否可以安全地假设,如果我对async_read进行了两次调用,则仅在处理完第一个调用之后才处理第二个调用?

Python,mmap,如果我不手动调用mmap.close()怎么办?

我们是否需要手动清除闭包中未引用的变量?

我是否需要为所有作者/读者保留变量以手动关闭它们?

我是否需要在content:// sms / inbox中手动插入新消息?

我是否需要在 react-native 中手动创建 res 文件夹?

如果我手动加载存储,则ExtJS TreeStore为空

如果我在情节提要中为collectionViewCells手动添加了单元格,该如何调用多个重用标识符?

仅保存如果进行了更改

如何知道Rails是否使用我手动创建的索引进行搜索?

当您需要使用AsyncIO和ThreadPoolExecutor时,是否需要手动调用loop.close()?

我不确定是否需要手动“清理”我的对象或垃圾收集器是否会处理它