美文网首页
RxJava使用小结

RxJava使用小结

作者: Goorwl | 来源:发表于2017-02-08 08:21 被阅读0次
  • RxJava已经更新到2.x版本,和1.x版本差别有点大,建议直接使用2.x版本

      compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
      compile 'io.reactivex.rxjava2:rxjava:2.0.5'
    
  • 简单使用

    • 创建被观察者

        Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> e) throws Exception {
                e.onNext("aaa");
                e.onNext("ccc");
                e.onNext(Thread.currentThread().getName());
                e.onComplete();
            }
        });
      
    • 创建观察者

        Observer<String> observer = new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.e(TAG, "onSubscribe:  " + d.toString());
            }
            @Override
            public void onNext(String s) {
                Log.e(TAG, "onNext:  " + s);
            }
            @Override
            public void onError(Throwable e) {
                Log.e(TAG, "onError:  " + e);
            }
            @Override
            public void onComplete() {
                Log.e(TAG, "onComplete:  " + Thread.currentThread().getName());
            }
        };
      
    • 订阅事件

        observable.subscribe(observer);
      
    • 简单的链式编程

        Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> e) throws Exception {
                e.onNext("haha");
                e.onNext("hehe");
                e.onComplete();
            }
        }).subscribe(new Observer<String>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.e(TAG, "onSubscribe:  " + d.toString());
            }
            @Override
            public void onNext(String s) {
                Log.e(TAG, "onNext:  " + s);
            }
            @Override
            public void onError(Throwable e) {
                Log.e(TAG, "onError:  " + e);
            }
            @Override
            public void onComplete() {
                Log.e(TAG, "onComplete:  ");
            }
        });
      
  • 更换线程

      observable.subscribeOn(Schedulers.newThread())      //指定被观察者的执行线程
          .observeOn(AndroidSchedulers.mainThread())      //指定观察者的执行线程
          .subscribe(observer);       //订阅事件
    
    • 注意:
      • 被观察者多次指定线程,只有第一次指定的有效;

      • 观察者多次指定线程,可以分开有效;

      • 详细参考

          observable.subscribeOn(Schedulers.newThread())
              .subscribeOn(Schedulers.io())
              .observeOn(AndroidSchedulers.mainThread())
              .doOnNext(new Consumer<Integer>() {
                  @Override
                  public void accept(Integer integer) throws Exception {
                      Log.d(TAG, "After observeOn(mainThread), current thread is: " + Thread.currentThread().getName());
                  }
              })
              .observeOn(Schedulers.io())
              .doOnNext(new Consumer<Integer>() {
                  @Override
                  public void accept(Integer integer) throws Exception {
                      Log.d(TAG, "After observeOn(io), current thread is : " + Thread.currentThread().getName());
                  }
              })
              .subscribe(consumer);
        
  • MAP操作符

    示例代码
    • map操作符的作用就是对上游发送的每一个事件应用一个函数, 使得每一个事件都按照指定的函数去变化。
    • amp操作符可以将上游发来的事件转换为任意的类型, 可以是一个Object, 也可以是一个集合。

【未完待续。。。】

相关文章

  • rxjava使用小结

    1.延迟请求 延迟n秒后再去请求 然后使用flatmap转换 2.轮询请求-无限轮询 3.轮询请求-限定次数轮询 ...

  • RxJava使用小结

    RxJava已经更新到2.x版本,和1.x版本差别有点大,建议直接使用2.x版本 compile 'io.rea...

  • 希望是最全的RxJava2使用场景小结

    因为之前是看可能是东半球最全的RxJava使用场景小结来学习RxJava的,由于升级2.0版本部分API已经替换。...

  • Android主流框架学习资料

    Android 开发小工具之:注解 Annotation 可能是东半球最全的RxJava使用场景小结 Androi...

  • Android框架——RxJava(一)概述与基本使用

    RxJava(一)概述与基本使用 RxJava学习系列: RxJava(一)概述与基本使用 [RxJava(二)创...

  • RxJava

    其它文章 RxJava操作符大全 1、RxJava之一——一次性学会使用RxJava RxJava简单的使用和使用...

  • Rxjava小结

    by hzwusibo 20190504 http://gank.io/post/560e15be2dca930e...

  • RxJava初探

    我们在学习RxJava之前要了解一下,为什么使用RxJava, 使用RxJava有什么好处 RxJava特性: 轻...

  • RxJava + Retrofit 简单使用

    RxJava接入 RxJava 简单用法 Retrofit 简单使用 RxJava + Retrofit RxJa...

  • RxJava2 使用 及 源码阅读

    RxJava2 使用 及 源码阅读 RxJava是什么?根据RxJava在GitHub上给出的描述:RxJava ...

网友评论

      本文标题:RxJava使用小结

      本文链接:https://www.haomeiwen.com/subject/hghvittx.html