您的位置:首页 > 移动开发 > Android开发

RxJava & RxAndroid简单使用(2)

2017-04-11 10:58 447 查看
扔物线 基于rxjava1.0写的一篇《给 Android 开发者的 RxJava 详解》很值得我们细细品读,我是读了几遍,越度越有味道,RxJava的核心异步,即线程的调度,要想学好Rx的异步功能。这篇文章我们先来学习学习设计模式中的观察者模式Observe

RxJava 的观察者模式,四个基本概念:Observer (观察者)、Observable (被观察者)、 subscribe (订阅)、事件。Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable 可以在需要的时候发出事件来通知 Observer。

Observer 观察者

//观察者
Observer<Integer> observer = new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {

}

@Override
public void onNext(Integer value) {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onComplete() {

}
};


//RxJava内置观察者的接口 用法跟Observe一样
Subscriber<String> subscriber = new Subscriber<String>() {
@Override
public void onSubscribe(Subscription s) {

}

@Override
public void onNext(String s) {

}

@Override
public void onError(Throwable t) {

}

@Override
public void onComplete() {

}
};


Observable 被观察者

Rx1.0版创建被观察者方法

Observable observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("next1");
subscriber.onNext("next2");
subscriber.onCompleted();
}
});


Rx2.0的版创建被观察者的方法

//创建被观察者 Observable.create
Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {

}
});
//创建被观察者 直接new
Observable<String> observable2 = new Observable<String>() {
@Override
protected void subscribeActual(Observer<? super String> observer) {
observer.onNext("next1");
observer.onNext("next2");
observer.onComplete();
}
};


Subscribe 订阅

订阅关系当然是观察者订阅被观察者啦

这样写

//观察者
Observer<String> observer = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {

}

@Override
public void onNext(String value) {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onComplete() {

}
};
//观察者订阅被观察者
Observable.just("1","2","3").subscribe(observer);


或者这样写

//观察者订阅被观察者
Observable.just("1", "2", "3").subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {

}

@Override
public void onNext(String value) {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onComplete() {

}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Observer Rxjava