首页 > 解决方案 > 当像 ConnectableObservable 这样的热门观察者完成时,如何获得回调?

问题描述

我正在为每个观察者终止时调用的 ConnectableObservable 搜索 doOn... 回调

       val gatewayItems = viewModel.getGatewayItems(gateways!!)
                .observeOn(Schedulers.io())
                .take(1)
                .publish()
                .autoConnect(2)

            gatewayItems.subscribe { sharedGateways -> sharedGatewaysAdapter.submitList(sharedGateways) }

            gatewayItems.subscribe { sharedGateways -> privateGatewaysAdapter.submitList(privateGateways) }

当我的两个观察者都发出终端事件信号时,我想回调我的多播热可观察对象

我试图将 doOnTerminate 和 doOnComplete 运算符放在我的父多播可观察对象上,但似乎这些回调被调用了 2 次(每个观察者一个)

标签: androidobservablerx-java2multicastobservers

解决方案


   val gatewayItems = viewModel.getGatewayItems(gateways!!)
            .observeOn(Schedulers.io())
            .take(1)
            .doOnComplete { ... }
            .doOnTerminate { ... }
            .publish()
            .autoConnect(2)

两者都.doOnComplete.doOnTerminate我工作。

编辑:您可能会do...以错误的顺序附加运算符。例如,这些doOnComplete都不起作用:

   val gatewayItems = viewModel.getGatewayItems(gateways!!)
            .observeOn(Schedulers.io())
            .doOnComplete { ... }
            .take(1)
            .publish()
            .autoConnect(2)
            .doOnComplete { ... }

推荐阅读