Android 调用dispose()之前是否需要检查isDisposed()?
我正在学习RxJava,我注意到很多示例代码在调用Android 调用dispose()之前是否需要检查isDisposed()?,android,rx-java2,Android,Rx Java2,我正在学习RxJava,我注意到很多示例代码在调用disposed()之前都会进行isDisposed()检查。当我在一个已经处理过的一次性的上调用dispose()时,我没有注意到任何问题 所以我的问题是,我需要isDisposed()检查吗?是否存在在处置前应检查isDisposed()的情况?首先进行检查的利弊是什么?调用isDisposed没有什么意义dispose实现已经为您完成了这项工作,并确保重复调用没有操作或没有可检测的影响 不幸的是,在RxJava的早期有人开始用它编写示例,现
disposed()
之前都会进行isDisposed()检查。当我在一个已经处理过的一次性的上调用dispose()
时,我没有注意到任何问题
所以我的问题是,我需要isDisposed()
检查吗?是否存在在处置前应检查isDisposed()
的情况?首先进行检查的利弊是什么?调用isDisposed
没有什么意义dispose
实现已经为您完成了这项工作,并确保重复调用没有操作或没有可检测的影响
不幸的是,在RxJava的早期有人开始用它编写示例,现在每个人都在复制这种模式
例如,在调用onNext
之前检查isDisposed
更有意义,但是如果您检查CompositeDisposable
(当然,如果您使用该类,而不是一次性接口的另一个实现)
有:
@Override
public void dispose() {
if (disposed) {
return;
}
...rest of method body
@Override
public boolean isDisposed() {
return disposed;
}
所以答案是,这取决于一次性接口的实现方式,您可以在JetBrains IDE中通过右键单击并转到>实现来检查它。dispose基本上用于关闭订阅流。您正在检查isdisposed()将告诉您现有流是否处于活动状态。如果通过该流的任何相关数据都将被剪切
当然,您可以随时致电dispose。safeDispose怎么样
fun Disposable?.safeDispose() {
if (this?.isDisposed == false) {
dispose()
}
}