Skip to content
mcxiaoke edited this page Jul 19, 2015 · 23 revisions

Subject 可以看成是一个桥梁或者代理,它同时充当了 SubscriberObservable 的角色。因为它是一个Subscriber ,它可以订阅一个或多个Observable;又因为它是一个Observable,它可以转发它收到的数据,也可以发送新的数据。

更多关于Subject 的种类和如何使用的信息,请参考 Subject中文文档

串行化

如果你把 Subject 当作一个 Subscriber 使用,注意不要从多个线程中调用它的onNext方法(包括其它的on系列方法),这可能导致同时(非顺序)调用,这会违反Observable协议,给Subject的结果增加了不确定性。

要避免此类问题,你可以将 Subject 转换为一个 SerializedSubject ,类似于这样:

mySafeSubject = new SerializedSubject( myUnsafeSubject );