首页 > 解决方案 > 使用 CompositeDisposables 的最佳实践是什么

问题描述

我尝试在 onComplete() 块上调用它,但是使用改造网络调用的compositeDisposables.clear() 会导致调用中途取消。

                               observable.......
                               .subscribe(
                                {
                                    utilModule.logI("net repo response")
                                    //cleanDisposables()//this causes HttpOk cancelled error
                                },
                                {
                                    utilModule.logI("no repo response" + it.message)
                                    //cleanDisposables()
                                }
                        ))
    }

    private fun cleanDisposables() {
        //clean old network observables, dispose will prevent further observing
        utilModule.logI("disposing observables")
        if (!compositeDisposables.isDisposed) {
            compositeDisposables.clear()
        }
    }

标签: androidretrofitrx-javaretrofit2rx-java2

解决方案


通常,您的一次性用品将与您的活动或片段生命周期相关联,并在 onDestroy 中清除。

这可能是一个使用 MVP 设计模式的例子......

presenter.kt
fun dispose() {
    compositeDisposable.clear()
}


activity.kt
override fun onDestroy() {
    super.onDestroy()
    presenter.dispose()
}

推荐阅读