一、被观察者(Observable)的创建
1. create
Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
// 通过 ObservableEmitter类对象产生事件并通知观察者
// a. 定义:事件发射器
// b. 作用:定义需要发送的事件 & 向观察者发送事件
emitter.onNext(1);
emitter.onNext(2);
emitter.onNext(3);
emitter.onComplete();
}
});
2. Just
Observable<String> observable = Observable.just("A","B","C","D");
3. fromArray
String [] data = new String[]{"Aa","Bb","Cc","Dd"};
Observable<String> observable1 = Observable.fromArray(data);
二、观察者(Observer)的创建
1.Observer
/**
* 创建观察者:方法一
* @return Observer
*/
private Observer getObserver(){
// 创建观察者
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "getObserver(), onSubscribe");
}
@Override
public void onNext(String s) {
Log.d(TAG, "getObserver(), onNext, value = " + s);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "getObserver(), onError :" + e.getCause() +", " + e.getMessage());
}
@Override
public void onComplete() {
Log.d(TAG, "getObserver(), onComplete");
}
};
return observer;
}
2.Consumer
/**
* 创建观察者:方法二
* @return Consumer
*/
private Consumer getConsumer(){
// 第二种观察者的创建? 都适用于什么情况?
Consumer<String> consumer = new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.d(TAG, "getConsumer(), accept s = " + s);
}
};
return consumer;
}
三、绑定(订阅subscribe)
// 订阅(绑定被观察者和观察者)
observable.subscribeOn(Schedulers.io()).subscribe(getObserver());
observable1.subscribe(getConsumer());