RxJava的使用

RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based 
programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、
基于事件的程序的库)。这个看不明白不要紧,等我们会使用RxJava后,自然就理解了。RxJava是利用观察者模式实现的,
所以,你暂时把它当作一个加强版的观察者模式即可。以下是RxJava的具体使用:

1.引入RxJava

compile 'io.reactivex:rxjava:1.1.0'
// 下面两个暂时用不到
compile 'io.reactivex:rxandroid:1.1.0'
compile ('com.jakewharton.rxbinding:rxbinding:0.3.0'){
        exclude module:'support-annotations'
}

2.观察者Subscriber

Subscriber更准确的叫法是“订阅者”,它实现了Observer接口,并在此基础上扩展了部分功能。使用方法如下:
Subscriber subscriber = new Subscriber() {
            @Override
            public void onCompleted() {
                // 不再有事件发出时会调用该方法
                System.out.println("onCompleted");
            }

            @Override
            public void onError(Throwable e) {
                // 当事件队列异常时,调用该方法,且观察事件终止
                System.out.println("onError");
            }

            @Override
            public void onNext(String s) {
                // 当被观察者发出信号时执行该方法
                System.out.println("onNext:" + s);
            }
        } ;

3.Observable被观察者

当内容发生改变时被观察者发出信号,以通知Subscriber。
Observable observable = Observable.create(

    new Observable.OnSubscribe() {                                                                                   
    @Override                                                             
    public void call(Subscribersuper String> subscriber) {                                                                

    // 被观察者发出信号
    subscriber.onNext("Hello World!");                                                       
    System.out.println("Hello World");   
                                                                             }}
) ;

4.Observable绑定Subscribe

观察者和被观察者都已经生成,但是现在还没有建立观察关系,建立观察关系代码如下:
observable.subscribe(subscriber) ;
这样当被观察者发出信息后,输出结果如下:
// 可以看出observable发出的信息已经被subscriber收到
onNext:Hello World!
Hello World
当然绑定后你也可以解绑
// 解绑后,subscriber将收不到observable发送的信息
subscriber.unsubscribe()
未完待续

你可能感兴趣的:(Rxjava,android)