【问题标题】:Rx Observable onCompleted called after disposedRx Observable onCompleted 在处理后调用
【发布时间】:2018-06-25 19:33:10
【问题描述】:

我在我的 Android 应用程序中使用 RxJava2。我有一个Observable,它在创建时被添加到CompositeDisposable。此Observable 正在从某些 API 检索数据,可能需要很长时间才能完成。

当我在下载时离开页面时,在onPause 中,我正在处理这个CompositeDisposable,但有时仍会调用Observable 的onComplete。

怎么会这样?

【问题讨论】:

  • 我确实这样做了,onComplete 在可观察对象被处理后调用
  • 在subscribe() 之前尝试onTerminateDetach,看看它是否仍然发生。

标签: android rx-java2


【解决方案1】:

如 Doc 中所述,onTerminateDetach 取消了对上游生产者和下游的引用。

例如

mDisposable.add(
            apiClient.apiCallSomeAPI()
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .concatMap(this::responseObservable)           
                    .toList()
                    .onTerminateDetach() // this is important, exactly before subscribe
                    .doOnSuccess(this::realmBulkOperation)
                    .subscribe(this::handleResult, this::handleError)
    );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2016-08-15
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多