我正在写一个Observable来处理与RxAndroidBle
的{{1}}相似的Android服务的连接。
我知道.establishConnection()
从不呼叫.establishConnection()
;发出连接后,它要么由订阅服务器处置,要么以错误结束(通常是在连接丢失的情况下)。但是在断开连接时将调用.onComplete()
是合理的。我尚未为此找到官方的.onComplete()
政策;似乎有些Observable可以做到,而另一些则没有。发出单个项目然后处置的Observable的正确行为是什么?
答案 0 :(得分:1)
发出一个单项然后处置的Observable的正确行为是什么?
如果我理解正确,那么这是一个关于Observable
根据官方被动政策处置时应如何表现的问题。实际上,在处置时,调用/不调用.onComplete()
都与Observable
's contract对齐,但是后者似乎是更可取的(在我的脑海中):
可观察的终止
Observable可能会在Observable收到观察者的订阅通知后立即开始向观察者发出通知。
当观察者向观察者发出取消订阅通知时,观察者将尝试停止向观察者发出通知。但是,不能保证Observable在观察者发出取消订阅通知后不会向观察者发出任何通知。
当Observable向其观察者发出OnError或OnComplete通知时,这将终止订阅。观察者无需向以这种方式终止的,由Observable终止的订阅发出取消订阅通知。
通知在哪里
致Observer
:
OnNext
OnCompleted
OnError
OnSubscribe
(可选)致ObservableSource
:
Subscribe
Unsubscribe
Request
(可选)