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

时间:2017-09-21 15:34:27

标签: java android rx-java observable rx-android

我正在开发一个经常使用Rx Java订阅和可观察对象的项目,我对这个概念很新。我想知道处理它们的最佳做法是什么。目前,我只是将var scrollBox=document.createElement('div data-simplebar'); 函数中的订阅/可观察对象置零,以及使用带有doOnUnsubscribe()的{​​{1}}来触发对可观察对象的断开连接。这是清理这些参考文献的正确方法还是有更好的方法?谢谢!

1 个答案:

答案 0 :(得分:4)

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

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

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

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

淘汰资源可能无法满足您的需求,也不需要,尤其是如果有多个订阅。

相关问题