我正在学习RxJava,我注意到很多示例代码在调用isDisposed()
之前都会进行dispose()
检查。当我在已经处置dispose()
时调用Disposable
时,我没有注意到任何问题。
所以我的问题是,我需要isDisposed()
检查吗?在处理之前我是否应该检查isDisposed()
?首先进行检查有哪些优缺点?
答案 0 :(得分:3)
致电isDisposed
毫无意义。 dispose
实现已经为您执行此操作,并确保重复调用是无操作或无可检测的效果。
不幸的是,RxJava早期的某些人开始用它编写示例,现在每个人都在不断复制这种模式。
例如,在调用isDisposed
之前检查onNext
会更有意义,但您不会经常在Observable.create()
之外这样做。
答案 1 :(得分:0)
我不这么认为,如果你检查CompositeDisposable
的实现(当然如果你使用那个类,而不是另一个实现的一次性接口)
有:
@Override
public void dispose() {
if (disposed) {
return;
}
...rest of method body
@Override
public boolean isDisposed() {
return disposed;
}
所以答案是它取决于Disposable接口的实现方式,您可以通过右键单击JetBrains IDE进行检查,然后转到>实施
答案 2 :(得分:0)
dispose主要用于关闭订阅流。您正在检查isdisposed()将告诉您现有流是否处于活动状态。如果通过该流的任何相关数据将被切断。
Ofcors,您可以随时致电处置。
答案 3 :(得分:0)
safeDispose 怎么样?
fun Disposable?.safeDispose() {
if (this?.isDisposed == false) {
dispose()
}
}