RxJava 也火了很久了 RxJava我也使用了一段时间了 使用过之后 很长一段时间再不使用 就给忘了 还要重新寻找Api学习 现在做下笔记
"a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)
Rxjava 能够使我们的异步事件 清晰简洁 事务流程很清晰 , 如果有一大堆的异步调用 异步1成功之后调用 异步2 , 2了之后做一些处理 然后 又3 这样很容易把人绕晕,而且业务逻辑很不清楚,但是如果使用了 Rxjava 就很清楚了。
Rxjava 总得来说就是使用了 观察这模式 Observable (可被观察者 被观察者 也可以称作事件源 用来发出事件)Observer (观察者)Subscriber 订阅者 顾名思义和 Observer一样 是个 观察者 下面说下他的简单使用
创建观察者
Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("onNext"); subscriber.onNext("onNext1"); } }) ;
创建 观察者或者订阅
Subscriber<String> subscriber = new Subscriber<String>() { @Override public void onStart() { super.onStart(); System.out.print("start"); } @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { System.out.print("onNext-->"+s); } };
然后将被观察者 和 订阅建立起关系
observable.subscribe(subscriber);
这样 observable 发送一个事件 subscriber 就能够接收到事件 onStart事件默认都会调用的 这个函数就是在onNext()函数之前 做一些准备动作 上面的 onStart() 主动调用没有任何关系 默认都是第一个调用 其他方法都要显示调用 才能 调用 。onNext 可以多次调用 但是 onError onComplete只能调用一次 调用过这两个方法之后 再调用 onNext将不起作用 表示一系列事件的终结
同样Rxjava 也提供了 一些简单的函数 来简化Subscriber 的创建
Observable<String> observable = Observable.just("haha"); 如果你不关心onComplete 和 onError函数 只关心onNext函数 那你就可以使用Action0 Action1。。Action9这个接口 Action1<String> action1 = new Action1<String>() { @Override public void call(String s) { System.out.print("-->"+s); } };