RXJava2。我是否需要处理一次发出的流? (单身,也许)
RXJava2. Do I need dispose streams which emits once? (Single, Maybe)
我的代码里有很多Single
的,比如
Disposable disp = Single.fromCallable(()-> loadData())
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(res-> showInUI(res),
throwable -> Log.e(TAG, throwable.getMessage()))
);
正如我从文档中了解到的,Observable
和 Single
之间的区别在于 Single 可以响应错误、从不响应、响应成功并且只发出一次。
现在我不在任何地方处置,一切正常。
所以我需要执行 disp.dispose()
吗?
是的,的确,是Single
/Observable
/Completable
.
都无所谓
重要的是你不想让你的 UI 绑定到一些后台工作,这会泄露你的 Activity.
这也很重要,因为您不想在 UI 超出某个时间点(例如,在您的 Activity
被销毁之后)收到可能导致 NPE 或其他问题的通知。
除此之外,当用户 leave/close 和 Activity
/Screen
存在时,取消和停止昂贵的后台工作是一个很好的做法,以清理资源。
所有这些注意事项对所有 Observable
类型都是通用的。
我的代码里有很多Single
的,比如
Disposable disp = Single.fromCallable(()-> loadData())
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(res-> showInUI(res),
throwable -> Log.e(TAG, throwable.getMessage()))
);
正如我从文档中了解到的,Observable
和 Single
之间的区别在于 Single 可以响应错误、从不响应、响应成功并且只发出一次。
现在我不在任何地方处置,一切正常。
所以我需要执行 disp.dispose()
吗?
是的,的确,是Single
/Observable
/Completable
.
都无所谓
重要的是你不想让你的 UI 绑定到一些后台工作,这会泄露你的 Activity.
这也很重要,因为您不想在 UI 超出某个时间点(例如,在您的 Activity
被销毁之后)收到可能导致 NPE 或其他问题的通知。
除此之外,当用户 leave/close 和 Activity
/Screen
存在时,取消和停止昂贵的后台工作是一个很好的做法,以清理资源。
所有这些注意事项对所有 Observable
类型都是通用的。