RxJava2 create()注意

时间:2018-10-17 20:32:15

标签: rx-java2

this article阅读主题2,很明显,正确使用create()可能会涉及多个问题,例如:

  • 取消订阅Observable时注销注销(否则可能会导致内存泄漏)

  • 仅在订阅者仍被订阅时使用onNext或onCompleted发出事件

  • 使用onError在上游传播错误

  • 处理背压

但是看到RxJava2开发人员的示例,例如this one,其中使用create()而没有任何进一步的检查或警告,让我想知道create()的问题有多深? / p>

如果我希望Subject可以随时推送一个值,就像该链接中的那个一样:

Subject<Integer> subject = BehaviorSubject.<Integer>create().toSerialized();

Observable<Integer> observable = subject.observeOn(AndroidSchedulers.mainThread());

observable.subscribe(System.out::println);

subject.onNext(1)

可以使用create()还是危险吗?如何知道何时需要保护create()排放物以及何时不需要保护排放物?

1 个答案:

答案 0 :(得分:2)

Observable.create(OnSubscribe)BehaviorSubject.create()的创建不同。后者始终是安全的,因为它创建了最终的预先实现的 BehaviorSubject,这是一个热门 Observable

Observable.create(OnSubscribe)用于从头开始设置 Observable ,并且要求开发人员正确实施整个可观察的协议。它容易出错,在1.x后期,不推荐使用create(OnSubscribe)方法。请阅读其javadoc了解更多详细信息。

在RxJava 2中,两种类型的create方法都是安全的。