RxJava在Android中使用笔记

使用RxJava可以方便实现观察者模式,数据转换和线程之间通信

https://github.com/ReactiveX/RxJava

在Android中使用RxAndroid增加安卓主线程支持:

https://github.com/ReactiveX/RxAndroid

实际开发中在gradle中注册对应的依赖即可:

compile 'io.reactivex:rxandroid:1.1.0'

 观察者模式一般要有两个对象:

1.被观察者:Obserable

2.观察者:Observer

观察者和被观察者绑定后,被观察者在某种事件发生时会向所有观察它的观察者发送事件,即调用观察者的回调函数。

 

使用java.util里的观察者应该是这样的:

 

import android.util.Log;

import java.util.Observable;
import java.util.Observer;

public class ObserverTest {

    void test0() {
        //创建被观察者
        DemoObserable obserable = new DemoObserable();
        //创建一个观察者
        Observer observer1 = new Observer() {
            //观察者接收到事件时的操作
            @Override
            public void update(Observable observable, Object data) {
                Log.e("TAG", "ToObserver1: " + data);
            }
        };
        //添加绑定
        obserable.addObserver(observer1);
        //被观察者发送事件
        obserable.subscribe("Hello World!!");
        //被观察者将观察者移除
        obserable.deleteObserver(observer1);
    }

    //被监听者
    public class DemoObserable extends Observable {

        //被监听者发送数据给所有观察者
        void subscribe(String data) {
            setChanged();
            notifyObservers(data);
        }

    }
}

 假设观察者有多个,可以依次注册,删除:

 

//创建被观察者
        DemoObserable obserable = new DemoObserable();
        //创建一个观察者
        Observer observer1 = new Observer() {
            //观察者接收到事件时的操作
            @Override
            public void update(Observable observable, Object data) {
                Log.e("TAG", "ToObserver1: " + data);
            }
        };
        //创建一个观察者
        Observer observer2 = new Observer() {
            //观察者接收到事件时的操作
            @Override
            public void update(Observable observable, Object data) {
                Log.e("TAG", "ToObserver2: " + data);
            }
        };
        //添加绑定
        obserable.addObserver(observer1);
        obserable.addObserver(observer2);
然而,我们接下来使用 rx.Observer, rx.Observable, 思想也是类似的:

相关推荐