rxjava(二)Single与Subject
来源:互联网 发布:java 线程池 编辑:程序博客网 时间:2024/05/22 12:01
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
0 0
- rxjava(二)Single与Subject
- RxJava之二——Single和Subject
- RxJava之Subject和Single
- rxjava(三)Subject与Scheduler
- RxJava学习篇之一:基础Observable,Observer,Single,Subject,Scheduler
- RxJava-Subject
- Rxjava分析—Subject
- Rxjava分析—Subject
- RxJava之Subject
- Rxjava Subject分析
- Rxjava Subject分析
- RxJava(RxAndroid)Subject学习
- Rxjava分析—Subject
- Rxjava(Subject)-AsyncSubject--demo
- Rxjava(Subject)-BehaviorSubject--demo
- Rxjava(Subject)-PublishSubject--demo
- Rxjava(Subject)-ReplaySubject--demo
- RxJava—Subject系列
- (java)处理socket通信过程中粘包的情况
- windows Git Bash 无法运行python文件的解决方法
- Swift3的playground中对UI直接测试支持的改变
- 改变Bitmap的大小
- Android 多进程通讯之 AIDL
- rxjava(二)Single与Subject
- fresco--facebook推出的一款强大的android图片处理库
- slf4j-api、slf4j-log4j12、log4j的关系
- 微服务架构的分布式事务问题
- Linux入门指令
- 【Creator】访问节点或者其他组件
- 老人是真饿了(sort+结构体+贪心) hd 2187
- 面向对象的三大特性,动态绑定,抽象,接口
- 插件之ContentProvider的管理