作者:IT魔幻师
博客:www.huyingzi.top
转载请注明出处:https://www.jianshu.com/p/88e368311f8b
一、前言
Rxjava是基于事件流 开发的响应式编程框架,适用于复杂业务场景,rxandroid是rxjava的一个安卓扩展版,rxandroid里面扩展了一些Android组件,开发的时候我们将两个库都引入.
- Rxjava项目地址: https://github.com/ReactiveX/Rxjava
- Rxjava文档: https://mcxiaoke.gitbooks.io/rxdocs/content/
- Rxjava经典资料:https://github.com/lzyzsd/Awesome-RxJava
- 使用
implementation "io.reactivex.rxjava2:rxandroid:2.1.0" implementation "io.reactivex.rxjava2:rxjava:2.2.1"
二、被观察者,观察者,订阅的关系
- 依次创建被观察者,观察者,最后发起订阅
@Test
public void testObservable() {
System.out.println("-----被观察者 testCrteate 创建一个事件!");
//创建被观察者
Observable mObservable= Observable.create(new ObservableOnSubscribe() {
@Override
public void subscribe(ObservableEmitter emitter) throws Exception {
System.out.println("通知:被观察者 subscribe 发送通知给观察者");
//调用此方法后观察者就会在onNext中收到通知,不调用就不会通知观察者
emitter.onNext("你好我是你爸爸");
}
});
System.out.println("-----观察者 testCrteate 创建一个观察者观察事件!");
//观察者 线程调度 泛型
Observer mObserver = new Observer<String>(){
@Override
public void onSubscribe(Disposable d) {
System.out.println("通知:观察者 onSubscribe 告诉被观察者有人订阅了事件");
}
@Override
public void onNext(String s) {
System.out.println("通知:观察者收到通知 onNext :"+s);
}
@Override
public void onError(Throwable e) {
System.out.println("通知:观察者 onError ");
}
@Override
public void onComplete() {
System.out.println("通知:观察者 onComplete ");
}
};
System.out.println("-----订阅 subscribe 订阅事件!");
//订阅 将观察者通过subscribe提交到被观察者中
mObservable.subscribe(mObserver);
}
-
结果输出
三、链式调用,创建被观察者时直接发起订阅,将被观察者作为参数传递
@Test
public void testObservable2() {
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("我是你爸爸");
}
}).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
四、最终进化-使用操作符
@Test
public void testjust() {
//just是create的快捷创建操作
Observable.just("我是你爸爸","我是你爸爸2").subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
//此处会依次收到just参数传递过来的值
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}