RXJava2。我是否需要一次发出的处理流? (单身,也许)

时间:2017-05-22 10:07:22

标签: java rx-java rx-java2

我的代码中有很多Single,例如

Disposable disp = Single.fromCallable(()-> loadData())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(res-> showInUI(res),
                    throwable -> Log.e(TAG, throwable.getMessage()))
            );

正如我从文档中所理解的那样,ObservableSingle之间的区别在于Single可以回复错误,从不响应,响应成功并且只发出一次。 现在我不会在任何地方处置,一切正常。

所以我需要执行disp.dispose()吗?

1 个答案:

答案 0 :(得分:5)

是的,确实,它是Single / Observable / Completable无关紧要。
这很重要,因为您不希望将UI绑定到某些后台工作,这会泄露您的活动。
这也很重要因为您不希望在UI之后(例如,在Activity被破坏之后)在UI处获得可能导致NPE或其他问题的通知。 除此之外,当用户离开/关闭Activity / Screen时,取消和停止昂贵的后台工作是一个很好的方法,以便清除资源。
所有这些注意事项对于所有Observable类型都是通用的。