rxjava(二)Single与Subject
2016-07-19 18:08
627 查看
Single
Single只发射一个值,或者一个error,而不是发射一系列的值。订阅Single只需要两个方法:
· onSuccess
- Single发射单个的值到这个方法
· onError
- 如果无法发射需要的值,Single发射一个Throwable对象到这个方法
Single只会调用这两个方法中的一个,而且只会调用一次,调用了任何一个方法之后,订阅关系终止。
参考文档http://reactivex.io/documentation/single.html
Single<String> single = Single.just("hello"); BlockingSingle<String> blockingSingle = BlockingSingle.from(single); System.out.println(blockingSingle.value());
打印
hello
Subject
Subject可以充当Observer和Observable。因此它可以转发它收到的数据,也可以发新的数据。Subjecttugi一共有四种类型
AsyncSubject
AsyncSubject 发送最后一个值。它会把这最后一个值发射给任何后续的观察者。
如果发生了错误,只是简单的向前传递这个错误通知
AsyncSubject<String> subject = AsyncSubject.create(); Observer ob=new Observer(){ @Override public void onCompleted() { System.out.println("onCompleted"); } @Override public void onError(Throwable e) { System.out.println("Throwable"); } @Override public void onNext(Object o) { System.out.println("onNext"+o); } }; subject.onNext("one"); subject.onNext("two"); subject.onNext("three"); subject.onCompleted();//注释掉 就不会回调相关函数 没有任何打印 subject.subscribe(ob);
打印
onNextthree onCompleted
BehaviorSubject
当观察者订阅时,开始发送最近的数据(如果此时还没有收到数据,它会发射一个默认值),然后继续发射其它数据。 如果发生错误就会终止,BehaviorSubject将不会发送任何数据,只是简单的向前传递这个错误通知。
BehaviorSubject<String> subject = BehaviorSubject.create("zero"); Observer ob=new Observer(){ @Override public void onCompleted() { System.out.println("onCompleted"); } @Override public void onError(Throwable e) { System.out.println("Throwable"); } @Override public void onNext(Object o) { System.out.println("onNext"+o); } }; subject.subscribe(ob);//onNextzero onNextone onNexttwo onNextthree subject.onNext("one"); subject.onNext("two"); // subject.onError(new Throwable()); subject.onNext("three"); subject.subscribe(ob);//onNextthree
参考
http://reactivex.io/documentation/operators/defer.html
本文例子https://github.com/springsmile/rxjavademo
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树