Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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 RxJava dispose在subscribe中可见_Android_Kotlin_Rx Java - Fatal编程技术网

Android RxJava dispose在subscribe中可见

Android RxJava dispose在subscribe中可见,android,kotlin,rx-java,Android,Kotlin,Rx Java,是否有任何清晰和智能的解决方案来处理subscribe方法中的可观测数据? 例如,我有一个可观察的间隔,每秒发射很长时间。在我的订阅方法中,我想检查是否比取消订阅早20秒 val observable = Observable.interval(1000,TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread())

是否有任何清晰和智能的解决方案来处理subscribe方法中的可观测数据? 例如,我有一个
可观察的间隔,每秒发射很长时间。在我的订阅方法中,我想检查是否比取消订阅早20秒

val observable = Observable.interval(1000,TimeUnit.MILLISECONDS)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                { num ->

                    if(num == 20.toLong())
                    {
                        observable.dispose()//I cant call dispose here because variable 'observable' is not avaliable yet
                    }
                })

实现这种逻辑的最简单和正确的方法是什么?

我找到了一个简单的解决方案。只需将变量声明和初始化分为两个步骤

例如


您是否尝试了
takeUntil
takeWhile
操作员?谢谢,是的,takeUntil正是我想要的。
var observable:Disposable? = null
observable = Observable.interval(1000,TimeUnit.MILLISECONDS)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                { num ->

                    if(num == 20.toLong())
                    {
                        observable?.dispose()
                    }
                })