【问题标题】:To Kill an Observable杀死一个 Observable
【发布时间】:2020-10-27 05:37:11
【问题描述】:

对不起,双关语,不得不这样做。

我有一个这样声明的可观察对象:

Observable
        .interval(20, TimeUnit.MILLISECONDS)
        .subscribe {
            val timeDiff = System.currentTimeMillis() - testSum
            Log.i("LOG", "TIME DIFF: $timeDiff")
            testSum = System.currentTimeMillis()

            mVisualizer.getWaveForm(waveformByteArray)
            onWaveFormDataCaptureManual(waveformByteArray)
        }

无论我尝试做什么,这个 observable 都不会死。一次性用品.add() (这似乎是 Java 中的答案)给了我一个未解决的参考错误。在此之前,我什至不能将它保存到变量中,因为它也会在屏幕上显示很多红色。

仅供参考,我已经用 Google 搜索过这个问题。没有任何效果。

【问题讨论】:

  • 你用的是 Rxjava 2 还是 3?
  • RxJava 2。但 Manohar 的解决方案正是我想要的。

标签: android kotlin rx-java reactivex rx-kotlin


【解决方案1】:

您需要将输出一次性处理掉

import io.reactivex.disposables.Disposable  //required import

 var diposable:Disposable?=null   //global variable


   disposable= Observable
            .interval(20, TimeUnit.MILLISECONDS)
            .subscribe {
                val timeDiff = System.currentTimeMillis() - testSum
                Log.i("LOG", "TIME DIFF: $timeDiff")
                testSum = System.currentTimeMillis()

                mVisualizer.getWaveForm(waveformByteArray)
                onWaveFormDataCaptureManual(waveformByteArray)
            }

处置使用

 disposable?.dispose()

如果您有多个一次性用品,那么您可以使用CompositeDisposable

 var compositeDisposable:CompositeDisposable= CompositeDisposable()

 val disposable= Observable
        .interval(20, TimeUnit.MILLISECONDS)
        .subscribe {
            val timeDiff = System.currentTimeMillis() - testSum
            Log.i("LOG", "TIME DIFF: $timeDiff")
            testSum = System.currentTimeMillis()

            mVisualizer.getWaveForm(waveformByteArray)
            onWaveFormDataCaptureManual(waveformByteArray)
        }

     compositeDisposable.add(disposable)
    // you can add as many disposables as you want

丢弃使用

   compositeDisposable.dispose()  //every thing is disposed

【讨论】:

    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2011-07-28
    • 2018-12-03
    相关资源
    最近更新 更多