在我的代码库中有几种情况,我订阅的流只会发出一个结果,因此使用rx.Single而不是rx.Observable.Single 的文档说明如下:
Single将只调用其中一种方法,并且只调用一次.在调用任一方法时,Single终止并且对它的订阅结束.
使用传统的ObservableI捕获对Subscription的引用,以便我可以在适当的时候取消订阅并且不会导致内存泄漏:
Subscription s = getObservable().subscribe(...);
subscriptions.add(s);
subscriptions.clear();
Run Code Online (Sandbox Code Playgroud)
我的问题是,对于Single是否有必要,或者由于订阅立即结束,它可以简单地保留为:
getSingle.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
没有任何负面影响的参考被保留到订户.
Single并没有告诉你它将运行多长时间.
由于您的目标是Android,答案是肯定的,您应该保留订阅并取消订阅.
想象一下,你正在切换碎片/活动,并且需要长时间运行SingleSubscribers's onSuccess.所以最好的时间和空间可能在onPause(),但这取决于你的背景.
您可能会遇到NullPinterExceptions,如果您不取消订阅,适配器会被多次填充或类似的问题.
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |