android RxJava2中的subscribe()
和subscribeWith()
有什么区别?这两个函数都用于在Observable上预订Observer。两种功能的主要区别是什么?
在哪里使用subscribe和在哪里使用subscribeWith。如果可能,请提供代码示例。
最佳答案
由于1.x Observable.subscribe(Subscriber)
返回了Subscription
,因此用户经常将Subscription
添加到CompositeSubscription
中,例如:
CompositeSubscription composite = new CompositeSubscription();
composite.add(Observable.range(1, 5).subscribe(new TestSubscriber<Integer>()));
根据Reactive-Streams规范,Publisher.subscribe
返回void,该模式本身在2.0中不再起作用。为了解决此问题,已将方法E subscribeWith
(E订户)添加到每个基本反应式类,该类将按原样返回其输入订户/观察者。在前面的两个示例中,由于ResourceSubscriber
直接实现Disposable
,因此2.x代码现在看起来像这样:CompositeDisposable composite2 = new CompositeDisposable();
composite2.add(Flowable.range(1, 5).subscribeWith(subscriber));
资料来源:What's different in [RxJava] 2.0