Android函数响应式编程最新RxJava-操作符入门(1)

Android函数响应式编程最新RxJava-基本用法

Rxjava操作符包括创建操作符、变换操作符、过滤操作符、组合操作符、错误处理操作符、辅助操作符、条件操作符等等.
今天介绍一下创建操作符变换操作符

1.创建操作符
上一篇文章介绍了创建操作符 just create from , 还有defer,range,interval,repeat,timer等,下面介绍interval和range,repeat。

(1).interval
创建一个按固定时间发射整数序列 的Observable,也就是计时器,下面的代码表示每隔3s打印一次Log:

  Observable.interval(3, TimeUnit.SECONDS).subscribe(new Observer() {
        @Override
        public void onSubscribe(@NonNull Disposable d) {
            
        }

        @Override
        public void onNext(@NonNull Long aLong) {
                Log.e(TAG,aLong+"");
        }

        @Override
        public void onError(@NonNull Throwable e) {

        }

        @Override
        public void onComplete() {

        }
    });
interval.jpg

(2).range

创建发射指定范围的整数序列的Observable,可以代替for循环,第一个参数为起始值,并且不小于0;第二个参数为终止值,左闭右开。代码如下:

   Observable.range(0,10).subscribe(new Observer() {
        @Override
        public void onSubscribe(@NonNull Disposable d) {

        }

        @Override
        public void onNext(@NonNull Integer integer) {
            Log.e(TAG,integer+"");
        }

        @Override
        public void onError(@NonNull Throwable e) {

        }

        @Override
        public void onComplete() {

        }
    });
Android函数响应式编程最新RxJava-操作符入门(1)_第1张图片
range.jpg

(3).repeat
创建一个特定次数重复发射特定数据的Observable,代码如下 :

Observable.range(0,2).repeat(3).subscribe(new Observer() {
@Override
public void onSubscribe(@NonNull Disposable d) {

}

@Override
public void onNext(@NonNull Integer integer) {
    Log.e(TAG,integer+"");

}

@Override
public void onError(@NonNull Throwable e) {

}

@Override
public void onComplete() {

}
});
Android函数响应式编程最新RxJava-操作符入门(1)_第2张图片
repeat.png

2.变换操作符

变换操作符作用是对Observable发射的数据按照一定规则做一些变换,把变换完成的数据发射出去。变化操作符有 map,flatmap,concatmap,cast,groupBy,buffer,flatMapIterable等等。下面讲主要讲三个。

(1).map
map操作符,主要指定一个对象,转换成一个新的Observable对象并发射,比如我们总写的BASE_URL,总是在变化,但是后面的网址拼接不变。,这时候可以用map。

final String BASE_URL="https://github.com/javaexception";
Observable.just("/keyboard_Cash").map(new Function() {
@Override
public String apply(@NonNull String s) throws Exception {
    return BASE_URL+s;
}
}).subscribe(new Observer() {
@Override
public void onSubscribe(@NonNull Disposable d) {

}

@Override
public void onNext(@NonNull String s) {
      Log.e(TAG,s+"");
}

@Override
public void onError(@NonNull Throwable e) {

}

@Override
public void onComplete() {

}
});
map.png

(2). flatMap与cast
flatMap讲发射的数据转换为Observable集合,而cast操作符是将Observable集合转换为指定的类型。

  List list=new ArrayList<>();
    list.add("a1");
    list.add("a2");
    list.add("a3");  //我要选择的
    list.add("a4");
 Observable.fromArray(list).flatMap(new Function, ObservableSource>() {
@Override
public ObservableSource apply(@NonNull List strings) throws Exception {
    return Observable.just(BASE_URL+strings.get(2));
}
}).cast(String.class).subscribe(new Observer() {
@Override
public void onSubscribe(@NonNull Disposable d) {

}

@Override
public void onNext(@NonNull String s) {
    Log.e(TAG,s+"");
}

@Override
public void onError(@NonNull Throwable e) {

}

@Override
public void onComplete() {

}
});
flatmap.jpg

(3). flatMapIterable

flatMapIterable操作符可以将数据包装成Iterable,zai Iterable中我们就可以对数据进行处理:

   Observable.just(1,2,3).flatMapIterable(new Function>() {
        @Override
        public Iterable apply(@NonNull Integer integer) throws Exception {
            List list=new ArrayList();
            list.add(integer+1);
            return list;
        }
    }).subscribe(new Observer() {
        @Override
        public void onSubscribe(@NonNull Disposable d) {

        }

        @Override
        public void onNext(@NonNull Object o) {
                       Log.e(TAG,o+"");
        }

        @Override
        public void onError(@NonNull Throwable e) {

        }

        @Override
        public void onComplete() {

        }
        });

flatmapiterable.jpg

上面给just数据里全部加上1,结果显示全部加1了。

今天的Rxjava就介绍到这,持续更新中!

你可能感兴趣的:(Android函数响应式编程最新RxJava-操作符入门(1))