android学习笔记(2)--RxJava

紧接上一篇博文,本篇介绍RxJava,一个实现异步操做的库java

RxJava最核心的两个东西是Observables和Subscribersweb

1.Observables(被观察者,事件源)发出一系列事件设计模式

2.Subscribers(观察者)处理这些事件异步

这里的事件能够是任何你感兴趣的东西(触摸事件,web接口调用返回的数据等等)ide

一个Observable能够发出零个或者多个事件,知道结束或者出错。函数

每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。ui

Rxjava的看起来很想设计模式中的观察者模式,可是有一点明显不一样,那就是若是一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。spa

 

eg.一个用RxJava来打印Hello World的程序设计

1.建立一个Observable:调用Observable.create
 
 
Observable<String> myObservable = Observable.create(  
    new Observable.OnSubscribe<String>() {  
        @Override  
        public void call(Subscriber<? super String> sub) {  
            sub.onNext("Hello, world!");  
            sub.onCompleted();  
        }  
    }  
);  

也能够用简化版本:code

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

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

2.建立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) { }  
};  

简化版本:

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

subscriber仅仅就是打印observable发出的字符串。

3.subscribe函数将myObservable对象和mySubscriber对象关联。完成了subscriber对observable的订阅。

myObservable.subscribe(mySubscriber);  

若是以前用的Action1的类,那么用下面的方法订阅:

myObservable.subscribe(onNextAction);  

合成以前的简洁版本,能够这样写:

Observable.just("Hello, world!")  
    .subscribe(new Action1<String>() { @Override public void call(String s) { System.out.println(s); } });

4.完成。如今mySubscriber订阅了myObservable,myObservable就是调用mySubscriber对象的onNext和onComplete方法,mySubscriber就会打印出Hello World!

 

 

以上是简单的RxJava的用法,下面来看一下MovieGuide中是如何使用RxJava:

在MovieGuide中,RxJava主要在迭代器类中使用

//todo

相关文章
相关标签/搜索