Android函数响应式编程最新RxJava-操作符入门
Posted 秦子帅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android函数响应式编程最新RxJava-操作符入门相关的知识,希望对你有一定的参考价值。
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<Long>() { @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() { } });
(2).range
创建发射指定范围的整数序列的Observable,可以代替for循环,第一个参数为起始值,并且不小于0;第二个参数为终止值,左闭右开。代码如下:
Observable.range(0,10).subscribe(new Observer<Integer>() { @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() { } });
(3).repeat
创建一个特定次数重复发射特定数据的Observable,代码如下 :
Observable.range(0,2).repeat(3).subscribe(new Observer<Integer>() { @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() { } });
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<String, String >() { @Override public String apply(@NonNull String s) throws Exception { return BASE_URL+s; } }).subscribe(new Observer<String>() { @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() { } });
(2). flatMap与cast
flatMap讲发射的数据转换为Observable集合,而cast操作符是将Observable集合转换为指定的类型。
List<String> list=new ArrayList<>(); list.add("a1"); list.add("a2"); list.add("a3"); //我要选择的 list.add("a4"); Observable.fromArray(list).flatMap(new Function<List<String>, ObservableSource<?>>() { @Override public ObservableSource<?> apply(@NonNull List<String> strings) throws Exception { return Observable.just(BASE_URL+strings.get(2)); } }).cast(String.class).subscribe(new Observer<String>() { @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() { } });
(3). flatMapIterable
flatMapIterable操作符可以将数据包装成Iterable,zai Iterable中我们就可以对数据进行处理:
Observable.just(1,2,3).flatMapIterable(new Function<Integer, Iterable<?>>() { @Override public Iterable<?> apply(@NonNull Integer integer) throws Exception { List<Integer> list=new ArrayList<Integer>(); list.add(integer+1); return list; } }).subscribe(new Observer<Object>() { @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() { } });
上面给just数据里全部加上1,结果显示全部加1了。
今天的Rxjava就介绍到这,持续更新中!
以上是关于Android函数响应式编程最新RxJava-操作符入门的主要内容,如果未能解决你的问题,请参考以下文章