Subscriber处置时Observable是否应该调用.onComplete()



我正在编写一个Observable来处理与Android服务的连接,它是以RxAndroidBle.establishConnection()为模型的。

我知道.establishConnection()从不调用.onComplete();在它发出连接后,它要么被订阅服务器处理,要么以错误结束(通常是在连接丢失的情况下(。但是,在处理连接时调用.onComplete()似乎是合理的。我还没有找到关于这方面的RxJava官方政策;似乎有些观测者做到了,而另一些则没有。对于发出单个项目然后被处理的Observable,正确的行为是什么?

对于发出单个项然后被处理的Observable,正确的行为是什么?

如果我理解正确,这是一个关于Observable在根据官方反应性策略处理时应该如何表现的问题。事实上,当被处理时,调用/不调用.onComplete()都与Observable的合同一致,但后者似乎更可取(粗体矿(:

可观测终止

Observable可以在收到来自观察者的Subscribe通知后立即开始向观察者发出通知。

当观察者向Observable发出取消订阅通知时,Observable将尝试停止向观察者发出通知。然而,不能保证在观察者向其发出取消订阅通知后,观察者不会向其发出任何通知

当Observable向其观察者发出OnError或OnComplete通知时,这将结束订阅。观察者不需要发出取消订阅通知来结束由观察者以这种方式结束的订阅。

通知在哪里:

Observer:

  • OnNext
  • OnCompleted
  • OnError
  • OnSubscribe(可选(

ObservableSource:

  • Subscribe
  • Unsubscribe
  • Request(可选(