什么是RxJava?RxJava 在 GitHub上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava。
接下来不多说什么了,直接进入今天的主题吧
一.API使用
RxJava的API使用,包括Observable的创建,以及变换,以及数据的过滤等
1.Observable创建
Observable的创建有几种方式,比如create,just,from,interval,timer
1.1 create方法,是Rxjava中创建Observable最基本的方法,例子如下-创建Observable时,传入onSubsribe作为参数,会被存储在Observable对象中,当Observable被订阅时,就会触发其call方法。
private void testRxMethod_create() {
Observable<RxBeanInfo> observable = Observable.create(new Observable.OnSubscribe<RxBeanInfo>() {
@Override
public void call(Subscriber<? super RxBeanInfo> subscriber) {
RxBeanInfo info = new RxBeanInfo();
info.setName("lqm.test");
subscriber.onNext(info);
subscriber.onCompleted();
}});
Subscriber<RxBeanInfo> subscriber = new Subscriber<RxBeanInfo>()
{
@Override
public void onCompleted() {
Log.i("rxjava", "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.i("rxjava", "error");
}
@Override
public void onNext(RxBeanInfo o) {
Log.i("rxjava", o.getName());
}};
//通过调用subscribe方法使观察者和订阅者产生关联,一旦订阅,Observable就会调用call().
observable.subscribe(subscriber);
}
11-17 14:27:14.513 14944-14944/pa.test.com.testapp I/rxjava: lqm.test
11-17 14:27:14.513 14944-14944/pa.test.com.testapp I/rxjava: onCompleted
1.2.just—通过调用just方法,传入你想发送的数据源,当订阅者进行订阅的时候就开始打印数据,需要注意的是,just()方法最多可传10个参数,它们会按照传入的参数的顺序来发射它们
private void testRxMethod_just() {
Observable<String> observable = Observable.just("1", "2", "3","4", "5","6","7","8","9","10");
Subscriber<String> subscriber = new Subscriber<String>()
{
@Override
public void onCompleted() {
Log.i("rxjava", "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.i("rxjava", "error");
}
@Override
public void onNext(String o) {
Log.i("rxjava", o);
}};
observable.subscribe(subscriber);
}
1.3.from—该方法参数是一个数组,然后from会将其拆分为一个个对象,发射出去
private void testRxMethod_from() {
List<String> items = new ArrayList<>();
items.add("1");
items.add("2");
items.add("3");
Observable<String> observable = Observable.from(items);
Subscriber<String> subscriber = new Subscriber<String>()
{
@Override
public void onCompleted() {
Log.i("rxjava", "onCompleted");
}
@Override
public void onError(Throwable e) {
Log.i("rxjava", "error");
}
@Override
public void onNext(String o) {
Log.i("rxjava", o);
}};
observable.subscribe(subscriber);
}
11-17 14:44:13.043 30921-30921/pa.test