java - 如何清理 Rx Subscription 和 Observable 以防止内存泄漏?

标签 java android rx-java observable rx-android

我正在从事一个经常使用 Rx Java 订阅和可观察对象的项目,我对这个概念还很陌生。我想知道处理它们的最佳做法是什么。目前,我只是取消了 doOnUnsubscribe() 函数中的订阅/可观察对象,以及使用 takeUntil()PublishSubject 来触发断开可观察对象。这是清理这些引用的正确方法还是有更好的方法?谢谢!

最佳答案

当订阅自然结束时,通过 onCompleted()onError(),订阅被清除。如果您使用:

Subscription sub = observable.subscribe( value -> doSomeStuff() );

然后调用sub.unsubscribe() 将释放资源。

您还可以使用 CompositeSubscription 来保存所有未完成的订阅。当您对组合执行 clear() 时,所有包含的订阅都将被取消订阅并删除;当您从组合中unsubscribe() 时,包含的所有订阅都将被取消订阅,然后组合订阅本身也将被取消订阅。

清空资源可能无法达到您想要的效果,也不需要这样做,尤其是在有多个订阅的情况下。

关于java - 如何清理 Rx Subscription 和 Observable 以防止内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46347939/

相关文章:

java - 在 Java 中以语言环境敏感的方式验证十进制数

java - 为什么matlab和java的ceil函数不同?

android - 如何使用 proguard 混淆 android 库(.aar)?

java - 自定义对话框 onClickListener

android - API 19 上的惰性导致的应用程序崩溃

android - 在 Google Paging Library 3 中没有任何滚动的情况下,Api 调用不会一次又一次地停止调用

java - 分隔符逗号

java - 仅使用 Primefaces 数据表对 JSF 进行操作审核

java - 将 Swing 事件可观察量与其他可观察量相结合

android - RXJava - 拆分和合并 Observable