什么是Rx
- ReactiveX是Reactive Extensions的缩写。
- Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流。目前Rx支持大部分流行的编程语言, 比如Java、C#、PHP等。
-Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序。
-可以这样定义:Rx = Observables + LINQ + Schedulers。 - ReactiveX不仅仅是编程接口,更是一种编程思想的突破。Rx还影响了其它程序库、框架以及编程语言。
Rx模式——观察者模式
-创建:Rx可以方便的创建事件流和数据流;
-组合:Rx使用查询式的操作符组合和变换数据流;
-监听:Rx可以订阅任何可以观察的数据流并执行操作。
Rx优点——简洁
-函数式风格:Rx可以方便的创建事件流和数据流;
-简化代码:Rx的操作符可以将复杂的逻辑简化为很少的几行代码;
-异步错误处理机制:传统的try/catch没办法处理异步计算,Rx提供了合适的错误处理机制;
-轻松使用并发:Rx的Observables和Schedulers让开发者可以避免底层线程同步和各种并发问题。
什么是RxJava
RxJava是[ReactiveX](http://reactivex.io/)在JVM上的一个实现,也就是说RxJava就是一种用Java语言实现的响应式编程,来创建 基于事件的异步程序。
提升开发效率,降低维护成本一直是开发团队永恒不变的宗旨。近一年来国内的技术圈子中越来越多的开始提及RxJava,学习和掌握RxJava已经很有必要。RxJava能帮助我们简化代码逻辑,提升代码可读性。这对于提升开发效率、降低后期维护成本很有帮助。
RxJava正在Android开发者中变的也越来越流行。唯一的问题就是上手不容易,尤其是大部分人之前都是使用命令式编程语言。但是一旦你弄明白了,你就会发现RxJava真是太棒了。
本系列帮助你了解RxJava,希望你学完之后能够了解RxJava背后的思想(熟练掌握还需要多使用多实践),并且喜欢RxJava。
学习RxJava
响应式编程的主要组成部分是Observable、 operator和subscriber。一般响应式编程的信息流如下所示:
Observable-> Operator 01 -> Operator 02->Operator03 ->Subscriber
Observable是事件的生产者,Subscriber是事件最终的消费者。
因为Subscriber通常在主线程中执行,因此设计上要求代码尽可能简单,只对事件作出响应(不对事件和数据进行修改),而修 改事件的工作全部由 operator执行。
Observable observable = Observable.create(newObservable.OnSubscribe() {
@Override
public voidcall(Subscriber subscriber) {
subscriber.onNext("hello word");
subscriber.onCompleted();
}
});
Observer observer =newObserver() {
@Override
public voidonCompleted() {
System.out.println("onCompleted");
}
@Override
public voidonError(Throwable e) {
System.out.println("onError");
}
@Override
public voidonNext(String s) {
System.out.println("onNext= "+ s);
}
};
observable.subscribe(observer);
上面提到修改事件在operator中执行(下面代码)
observable.map(new Func1<String, String>() {
@Override
public String call(String s) {
return s+" add content";
}
}).subscribe(observer);