android - 当订阅者处置时,Observable 应该调用 .onComplete() 吗?
问题描述
我正在编写一个 Observable 来处理与 Android 服务的连接,以RxAndroidBle
's为模型.establishConnection()
。
我知道.establishConnection()
从不打电话.onComplete()
;在它发出连接后,它要么由订阅者处置,要么以错误结束(通常是在连接丢失的情况下)。.onComplete()
但是在处理连接时调用它似乎是合理的。我还没有找到这方面的官方RxJava
政策;似乎有些 Observables 做到了,而另一些则没有。发出单个项目然后被处置的 Observable 的正确行为是什么?
解决方案
发出单个项目然后被处置的 Observable 的正确行为是什么?
如果我理解正确,这是一个关于Observable
根据官方反应政策处置时应该如何表现的问题。实际上,调用/不调用.onComplete()
when 处理都与Observable
's 合同一致,但后者似乎是首选(加粗我的):
可观察到的终止
Observable 可以在 Observable 收到观察者的订阅通知后立即开始向观察者发出通知。
当观察者向 Observable 发出取消订阅通知时,Observable 将尝试停止向观察者发出通知。但是,不能保证 Observable 在观察者发出取消订阅通知后不会向观察者发出任何通知。
当 Observable 向其观察者发出 OnError 或 OnComplete 通知时,这将结束订阅。观察者不需要发出取消订阅通知来结束由 Observable 以这种方式结束的订阅。
通知在哪里:
至Observer
:
OnNext
OnCompleted
OnError
OnSubscribe
(可选的)
至ObservableSource
:
Subscribe
Unsubscribe
Request
(可选的)
推荐阅读
- r - 具有多个相关(相关)结果的线性混合模型
- typescript - 错误类型错误:无法读取 null 的属性“项目”
- android - java.lang.NullPointerException:缺少 ID 的必需视图:
- android - 使用 Log 类时的 NullPointer
- javascript - 带有来自 Typescript 的路径的 Monorepo 不起作用
- batch-file - 如果文件早于 X 天 -> 运行命令 - CMD
- mongodb - 获取未来 30 天的数据
- android - Switch activiy on 方向改变了吗?
- apache - 如何设置我的 htaccess 文件以在 VueJS 中启用历史模式?
- asp.net-core - ASPNET CORE 3 浏览器永远不会用 F5 重新加载