rxjava2 的学习
学习路径
废话不多说直接贴链接
https://www.jianshu.com/u/c50b715ccaeb 这个人的rxjava2学习不用多说,言简意骇,没得说
https://blog.csdn.net/shangmingchao/article/details/72247730 在第一个学完之后该对rxjava有个大致框架的认识,这个很不错
第三步跑去运用就很ok了
我自己的学习路程
我自己学习rxjava是真的很头疼,不过看完第二个链接我一通百通
对于我来说
也就是说Subscriber订阅Flowable,Observer订阅Observable。 这句话是解谜的关键
Subscription与Disposable的关系
由于命名冲突,把rx 包改成org.reactivestreams。此外org.reactivestreams.Subscriber 不能从外面添加、取消或请求。
为了弥补这一空缺,我们为Flowable定义了抽象类DefaultSubscriber, ResourceSubscriber 和 DisposableSubscriber 分别提供了类似于rx.Subscriber的资源跟踪支持,并且可以从外面取消 dispose():
ResourceSubscriber<Integer> subscriber = new ResourceSubscriber<Integer>() {
@Override
public void onStart() {
request(Long.MAX_VALUE);
}
@Override
public void onNext(Integer t) {
System.out.println(t);
}
@Override
public void onError(Throwable t) {
t.printStackTrace();
}
@Override
public void onComplete() {
System.out.println("Done");
}
};
Flowable.range(1, 10).delay(1, TimeUnit.SECONDS).subscribe(subscriber);
subscriber.dispose();
注意,由于Reactive-Streams的兼容性,方法onCompleted被重命名为onComplete。
因为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无返回值。为了弥补这一点,我们增加了E subscribeWith(E subscriber)方法。因为在2.x中ResourceSubscriber 直接实现了Disposable,所以代码可以这样写。
CompositeDisposable composite2 = new CompositeDisposable();
composite2.add(Flowable.range(1, 5).subscribeWith(subscriber));
同时DisposeSubscriber和DefaultSubscriber都实现了Disposable;