RxJava 的基本使用

Posted yanglanwan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RxJava 的基本使用相关的知识,希望对你有一定的参考价值。

概述 
RxJava 就是一个实现异步操作的库。它可以代替我们的 Handler,AsynTask。


简介 
RxJava 最核心的两个东西是 Observables(被观察者,事件源)和 Subscribers(观察者)。 

Observables 发出一系列事件,Subscribers 处理这些事件。 

一个 Observable 可以发出零个或者多个事件,知道结束或者出错。每发出一个事件,就会 调用它的 Subscriber 的 onNext 方法,最后调用 Subscriber.onNext()或者 Subscriber.onError() 结束。 
注意:Rxjava 的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一 个 Observerble 没有任何的的 Subscriber,那么这个 Observable 是不会发出任何事件的。

 

HelloWord 

首先关联包

compile ‘io.reactivex:rxandroid:1.2.1‘

compile ‘io.reactivex:rxjava:1.1.6‘ 


//定义一个被观察者

Observable<String> myObservable = Observable.create( 
new Observable.OnSubscribe<String>()
@Override
public void call(Subscriber<? super String> sub)
  //向观察者发出通知                 
sub.onNext("Hello, world!");                   
sub.onCompleted();               
               
         
); 


这里定义的 Observable 对象仅仅发出一个 Hello World 字符串,然后就结束了。

接着创建一个 Subscriber 来处理 Observable 对象发出的字符串。

 

  //观察者有三个方法     
  Subscriber<String> mySubscriber = new Subscriber<String>()            
  @Override           
  public void onNext(String s)  
  System.out.println(s); 
                    
  @Override           
  public void onCompleted()    
                 
   @Override           
   public void onError(Throwable e)        ;   
 
//让观察者和被观察者产生关系  
myObservable.subscribe(mySubscriber); 

 //订阅后myObservable就是调用mySubscriber对象的onNext和onComplete方法, mySubscriber 就会打印出 Hello World! 

HelloWord 简化 

//RxJava 内置了很多简化创建 Observable 对象的函数,比如 Observable.just 创建只发出一 

//个事件就结束的 Observable 对象,可以简化为一行 

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

// 接下来看看如何简化Subscriber,上面的例子中,我们其实并不关心OnComplete和OnError,

// 只需要在 onNext 的时候做一些处理,这时候就可以使用 Action1 类。 

  Action1<String> onNextAction = new Action1<String>()  
   @Override           
   public void call(String s)                
   System.out.println(s);           
              
   ;  
 

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

 //现在的     
 myObservable.subscribe(onNextAction);      
 //可以再整体简化         
 Observable.just("Hello, world!")        
 .subscribe(new Action1<String>()                
 @Override               
 public void call(String s)                      
 System.out.println(s);               
                
 );   
 
 

 

以上是关于RxJava 的基本使用的主要内容,如果未能解决你的问题,请参考以下文章

RxJava基本使用

Retrofit+RxJava-基本使用

Rxjava源码分析&实践RxJava基本原理分析之订阅流

RxJava 的基本概念和基本实现

RxJava系列2(基本概念及使用介绍)

RxJava系列6(从微观角度解读RxJava源码)