RxJava的坑
2016-05-03 14:48
609 查看
情况一:
这种情况输出为
情况二:
这种情况就只会输出
解决方法:
Meterialize操作符将OnNext/OnError/OnComplete都转化为一个Notification对象并按照原来的顺序发射出来,而DeMeterialize则是执行相反的过程。
Observable.create((Observable.OnSubscribe<String>) subscriber -> { subscriber.onNext("aaaa"); subscriber.onNext("bbbb"); subscriber.onError(new NullPointerException()); subscriber.onNext("cccc"); subscriber.onNext("dddd"); subscriber.onCompleted(); }).subscribe(new Subscriber<String>() { @Override public void onCompleted() { System.out.println("onCompleted"); } @Override public void onError(Throwable e) { e.printStackTrace(); } @Override public void onNext(String s) { System.out.println("s=" + s); } }); }
这种情况输出为
s=aaaa s=bbbb java.lang.NullPointerException
情况二:
Observable.create((Observable.OnSubscribe<String>) subscriber -> { subscriber.onNext("aaaa"); subscriber.onNext("bbbb"); subscriber.onError(new NullPointerException()); subscriber.onNext("cccc"); subscriber.onNext("dddd"); subscriber.onCompleted(); }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<String>() { @Override public void onCompleted() { System.out.println("onCompleted"); } @Override public void onError(Throwable e) { e.printStackTrace(); } @Override public void onNext(String s) { System.out.println("s=" + s); } }); }
这种情况就只会输出
java.lang.NullPointerException
解决方法:
Observable.create((Observable.OnSubscribe<String>) subscriber -> { subscriber.onNext("aaaa"); subscriber.onNext("bbbb"); subscriber.onError(new NullPointerException()); subscriber.onNext("cccc"); subscriber.onNext("dddd"); subscriber.onCompleted(); }).subscribeOn(Schedulers.io()) .materialize() .observeOn(AndroidSchedulers.mainThread()) .<String>dematerialize() .subscribe(new Subscriber<String>() { @Override public void onCompleted() { System.out.println("onCompleted"); } @Override public void onError(Throwable e) { e.printStackTrace(); } @Override public void onNext(String s) { System.out.println("s=" + s); } }); }
Meterialize操作符将OnNext/OnError/OnComplete都转化为一个Notification对象并按照原来的顺序发射出来,而DeMeterialize则是执行相反的过程。
相关文章推荐
- 正常的Java web项目 Deployment Assembly 配置
- Spring初学之Bean标签中的abstract和parent属性
- protoc的protoc-gen-grpc-java插件
- JDK安装、配置
- springMVC post方式乱码解决方案
- eclipse中设置.abc--xyz触发提示输入时,提示This compilation unit is not on the build path of java project 异常如何解决?
- Spring中@Autowired注解、@Resource注解的区别
- Mac下打开eclipse 始终提示 你需要安装Java SE 6 Runtime
- Java中静态变量、静态代码块、非静态代码块以及静态方法的加载顺序
- 快速高效学习Java编程在线资源Top 20
- Java异常总结
- 学习:java原理—反射机制
- 第一个Java程序,你好java世界
- SSH中发生异常java.lang.IllegalStateException: getOutputStream() has already been called for this response
- java中关于类的封装与继承,this、super关键字的使用
- 关于Hibernate与spring集成更新无效的分析
- spring Test 整合Junit4 使用总结
- java String首字母大写
- ADT Plugin for eclipse 最新下载地址(2015年10月)
- java nio示例