RxJava2.0基本使用和注意事项

RxJava2.0的基本使用

本文主要讲述一下RxJava2.0版本的基本用法以及相应的注意事项,RxJava2.0版本的基本用法有3步:

  • 创建被观察者(事件发送者)
 //创建被观察者(事件发送者)
 Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
       @Override
         public void subscribe(ObservableEmitter<String> emitter) throws Exception {
             emitter.onNext("hello");
             emitter.onNext("rxjava");
             emitter.onComplete();
         }
  });
  • 创建观察者(事件接收者)
 //创建观察者(事件接收者)
 Observer<String> observer = new Observer<String>() {
      @Override
      public void onSubscribe(Disposable disposable) {
          mDisposable = disposable;
          Log.e("znh", "onSubscribe...");
      }

      @Override
      public void onNext(String value) {
          Log.e("znh", "onNext..." + value);
      }

      @Override
      public void onError(Throwable e) {
          Log.e("znh", "onError..." + e.getMessage());
      }

      @Override
      public void onComplete() {
          Log.e("znh", "onComplete...");
      }
  };
  • 事件发送者和事件接收者建立订阅关系
 //建立订阅关系
 observable.subscribe(observer);

实际使用时一般都是链式调用写法,使代码逻辑变的更简洁,方便操作符的使用:

 //链式调用
 Observable.create(new ObservableOnSubscribe<String>() {
      @Override
      public void subscribe(ObservableEmitter<String> emitter) throws Exception {
          emitter.onNext("hello");
          emitter.onNext("rxjava");
          emitter.onComplete();
      }
  }).subscribe(new Observer<String>() {
      @Override
      public void onSubscribe(Disposable disposable) {
          mDisposable = disposable;
          Log.e("znh", "onSubscribe...");
      }

      @Override
      public void onNext(String value) {
          Log.e("znh", "onNext..." + value);
      }

      @Override
      public void onError(Throwable e) {
          Log.e("znh", "onError..." + e.getMessage());
      }

      @Override
      public void onComplete() {
          Log.e("znh", "onComplete...");
      }
  });

最终的打印结果如下:

07-09 22:09:15.079 22776-22776/com.znh.rxjavademo E/znh: onSubscribe...
07-09 22:09:15.080 22776-22776/com.znh.rxjavademo E/znh: onNext...hello
07-09 22:09:15.080 22776-22776/com.znh.rxjavademo E/znh: onNext...rxjava
07-09 22:09:15.080 22776-22776/com.znh.rxjavademo E/znh: onComplete...

RxJava2.0的注意事项

  • onSubscribe方法中的参数Disposable是个非常重要的参数,如果想中途中断事件的处理,那么可以调用Disposable的dispose方法,调用该方法时事件接受者将不再接收事件(但是事件发送者仍继续发送事件),通常在Activity页面关闭时调用该方法中断未完成的操作。
  • 事件发送者如果发送多次onComplete事件,那么从第二次开始就是无效的,也就是说无论发送多少onComplete事件,接收者都只会接收一次onComplete事件。
  • 如果在onComplete之后发送onError事件或者多次发送onError事件,都会抛出异常,所以onError只能发送一次,并且不能在onComplete之后发送。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值