android - 当像 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 次(每个观察者一个)
解决方案
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 { ... }
推荐阅读
- android - 移动 Chrome 浏览器上的 Twilio 问题
- sorting - 这个排序问题的时间复杂度是多少?
- python - 嵌套字典与默认值字典合并
- javascript - 在新选项卡中打开 Javascript 链接
- python - 无法从使用 locustio 执行帖子的 API 获得 200 响应
- alexa - Alexa Skill 与 Cheerio
- swift - 更多关于带有 Optional 属性的 ReferenceWritableKeyPath 的奇怪行为
- html - 样式表“path/to/font-awesome/css/font-awesome-min.css”未加载,因为它的 MIME 类型 text/html 不是 text/css
- angular - Visual Studio 代码中的 Angular 编译错误
- jenkins - 根据拉取请求从 Bitbucket 触发 Jenkins 作业