RxJava2中的“unsafeSubscribe()”运算符发生了什么变化?

时间:2017-12-28 23:27:46

标签: android rx-java rx-java2

https://rxjava-doc.readthedocs.io/en/latest/What%27s-different-in-2.0/中没有提及它,我在编码时无法在建议中看到它。我可以看到“safeSubscribe()”。

它被删除了吗?

1 个答案:

答案 0 :(得分:0)

在v1中,默认的Observable.subscribe方法在传入的Subscriber(称为SafeSubscriber)上添加了一个安全包装,以防止某些滥用或其他非常规行为(例如崩溃{{1 }和onError)。

这通常会对运营商造成不利影响,因此大多数运营商都引入并使用了onCompleted

由于Reactive Streams规范禁止崩溃unsafeSubscribeObserveronNext方法,因此对onError行为更为严格。希望人们在实现onComplete时不会在这些方法中明确崩溃,或者他们只是使用lambda - Observer方法,而是删除了默认的安全包装。所以基本假设变成了subscribe() s表现得很好。因此,不再需要Observer方法。同时作为API刷新机会(主要版本跳转之间不强制使用二进制兼容性),我们可以选择删除或重命名旧方法。

不幸的是,一些实施者在这方面仍然不可靠,并期望旧的安全网。为了避免伤害玩家,引入了unsafeSubscribe方法,以尽可能优雅地防止这种不良行为。