Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 调用dispose()之前是否需要检查isDisposed()?_Android_Rx Java2 - Fatal编程技术网

Android 调用dispose()之前是否需要检查isDisposed()?

Android 调用dispose()之前是否需要检查isDisposed()?,android,rx-java2,Android,Rx Java2,我正在学习RxJava,我注意到很多示例代码在调用disposed()之前都会进行isDisposed()检查。当我在一个已经处理过的一次性的上调用dispose()时,我没有注意到任何问题 所以我的问题是,我需要isDisposed()检查吗?是否存在在处置前应检查isDisposed()的情况?首先进行检查的利弊是什么?调用isDisposed没有什么意义dispose实现已经为您完成了这项工作,并确保重复调用没有操作或没有可检测的影响 不幸的是,在RxJava的早期有人开始用它编写示例,现

我正在学习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()
    }
}