1、Rxjava是什么:简单来说,它就是一个实现异步操作的库;
2、Rxjava的优势:结构简单,程序逻辑清晰,编写更加容易;随着程序逻辑变得越来越复杂,它依然能够保持简洁。
3、Rxjava基本用法:
观察者
被观察者
订阅
观察者
Observer即观察者,它决定事件触发的时候将有怎样的行为。
RxJava观察者的事件回调方法除了普通事件onNext()(相当于onClick()/onEvent())之外,还定义了两个特殊的事件:onCompleted()和onError()。
onCompleted():事件队列完结。RxJava不仅把每个事件单独处理,还会把它们看做一个队列。RxJava规定,当不会再有新的onNext()发出时,需要触发onCompleted()方法作为标志。
onError():事件队列异常。在事件处理过程中出异常时,onError()
会被触发,同时队列自动终止,不允许再有事件发出。
在一个正确运行的事件序列中,onCompleted()和onError()有且只有一个,并且是事件序列中的最后一个。需要注意的是,onCompleted()
和onError()二者也是互斥的,即在队列中调用了其中一个,就不应该再调用另一个。
被观察者
Observable即被观察者,它决定什么时候触发事件以及触发怎样的事件。可以使用create()、just(T...)、from(T[])或from(Iterable
T>)来创建一个Observable,并为它定义事件触发规则。
1、使用Observable.just()创建被观察者
Observable
observable2 = Observable.just("Hello", "World");
2、使用Observable.from()创建被观察者
String
[] words = {"Hello", "World"};
Observable
observable3 = Observable.from(words);
订阅
创建了Observable和Observer之后,再用subscribe()方法将它们联结起来
观察者
Subscriber
Action
Action是RxJava
的一个接口,常用的有Action0和Action1。
Action0: 它只有一个方法call(),这个方法是无参无返回值的;由于 onCompleted() 方法也是无参无返回值的,因此 Action0 可以被当成一个包装对象,将onCompleted() 的内容打包起来将自己作为一个参数传入 subscribe() 以实现不完整定义的回调。
Ation1:它同样只有一个方法 call(Tparam),这个方法也无返回值,但有一个参数;与 Action0 同理,由于 onNext(T obj) 和 onError(Throwableerror) 也是单参数无返回值的,因此 Action1 可以将 onNext(obj)和 onError(error) 打包起来传入 subscribe()以实现不完整定义的回调
三、转换——map、flatMap
Func1,Func1和上一篇提到的Action1相似。Func1
和 Action的区别在于, Func1 包装的是有返回值的方法。