美文网首页
RxJava入门基础详解

RxJava入门基础详解

作者: kecai | 来源:发表于2017-05-12 14:04 被阅读27次

    RxJava正在Android开发者中变的越来越流行。现在项目中运用到,所以也深入学习。软件这行嘛,特别是程序猿,学习能力要跟上。废话不多说,直接开始。总的概括是:Rxjava就是设计模式中的观察者模式。

    基础

    RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件。Subscribers处理这些事件。这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据。。。),Observable可以发出零个或者多个事件,知道结束或者出错。每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。

    之前也说了:Rxjava就是设计模式中的观察者模式。那么如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。

    入门HelloWorld

    创建一个Observable对象很简单,直接调用Observable.create即可

    Observable myObservable = Observable.create(
        newObservable.OnSubscribe() {
          public void call(Subscriber<? super String > sub) {
            sub.onNext("Hello, world!");
            sub.onCompleted();
          }
        }
    );
    这里定义的Observable对象仅仅发出一个Hello World字符串,然后就结束了。接着我们创建一个Subscriber来处理Observable对象发出的字符串。
    Subscriber mySubscriber =newSubscriber() {
      public void onNext(String s) { System.out.println(s); }
      public void  onCompleted() { }
      public void onError(Throwable e) { }
    }

    这里subscriber仅仅就是打印observable发出的字符串。通过subscribe函数就可以将我们定义的myObservable对象和mySubscriber对象关联起来,这样就完成了subscriber对observable的订阅。

    myObservable.subscribe(mySubscriber);
    一旦mySubscriber订阅了myObservable,myObservable就是调用mySubscriber对象的onNext和onComplete方法,mySubscriber就会打印出Hello World!

    看到这里大家会说:就一个Hello World 特么就要了那么多代码,何来简洁,简直是加重了代码行数。但是您耐心观察你就会发现,RxJava 的这个实现,是一条从上到下的链式调用,没有任何嵌套,这在逻辑的简洁性上是具有优势的。(这个大家慢慢体会哈)。

    下面我们来个更简单的更简洁的代码实现:

    RxJava内置了很多简化创建Observable对象的函数,比如Observable.just就是用来创建只发出一个事件就结束的Observable对象,上面创建Observable对象的代码可以简化为一行:

    Observable myObservable = Observable.just("Hello, world!");

    你们看少了create 那坨代码吧,是不是越来越爽呢?

    接下来看看如何简化Subscriber,上面的例子中,我们其实并不关心OnComplete和OnError,我们只需要在onNext的时候做一些处理,这时候就可以使用Action1类。

    Action1 onNextAction =newAction1() {
      public void call(String s) {
      System.out.println(s);
      }
    }

    subscribe方法有一个重载版本,接受三个Action1类型的参数,分别对应OnNext,OnComplete, OnError函数。


    myObservable.subscribe(onNextAction, onErrorAction, onCompleteAction);
    这里我们并不关心onError和onComplete,所以只需要第一个参数就可以
    myObservable.subscribe(onNextAction);

    所以最终的写法:

    Observable.just("Hello, world!")
      .subscribe(newAction1() {
        public void call(String s) {
        System.out.println(s);
        }
      });
    今天的基础就讲解到这里。下一章我会详细RxJava用法以及操作符(Operators)

    相关文章

      网友评论

          本文标题:RxJava入门基础详解

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