订户处置时,Observable是否应调用.onComplete()?

时间:2018-11-04 05:53:04

标签: android observable rx-java2 rxandroidble

我正在写一个Observable来处理与RxAndroidBle的{​​{1}}相似的Android服务的连接。

我知道.establishConnection()从不呼叫.establishConnection();发出连接后,它要么由订阅服务器处置,要么以错误结束(通常是在连接丢失的情况下)。但是在断开连接时将调用.onComplete()是合理的。我尚未为此找到官方的.onComplete()政策;似乎有些Observable可以做到,而另一些则没有。发出单个项目然后处置的Observable的正确行为是什么?

1 个答案:

答案 0 :(得分:1)

  

发出一个单项然后处置的Observable的正确行为是什么?

如果我理解正确,那么这是一个关于Observable根据官方被动政策处置时应如何表现的问题。实际上,在处置时,调用/不调用.onComplete()都与Observable's contract对齐,但是后者似乎是更可取的(在我的脑海中):

  

可观察的终止

     

Observable可能会在Observable收到观察者的订阅通知后立即开始向观察者发出通知。

     

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

     

当Observable向其观察者发出OnError或OnComplete通知时,这将终止订阅。观察者无需向以这种方式终止的,由Observable终止的订阅发出取消订阅通知。

通知在哪里

Observer

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

ObservableSource

  • Subscribe
  • Unsubscribe
  • Request(可选)