前言:对Rx不了解的朋友可以先看我的第一篇博文 RxJava 和 RxAndroid 一 (基础),是对Rxjava的基本介绍
1、merge操作符,合并观察对象
19 List list1 = new ArrayList<>() ;
20 List list2 = new ArrayList<>() ;
21
22 list1.add( "1") ;
23 list1.add( "2") ;
24 list1.add( "3") ;
25
26 list2.add( "a") ;
27 list2.add( "b") ;
28 list2.add( "c") ;
29
30 Observable observable1 =Observable.from( list1 ) ;
31 Observable observable2 =Observable.from( list2 ) ;
32
33 //合并数据 先发送observable2的全部数据,然后发送 observable1的全部数据
34 Observable observable =Observable.merge( observable2 , observable1 ) ;
35
36 observable.subscribe(newAction1() {
37 @Override
38 public voidcall(Object o) {
39 System.out.println( "rx-- " +o );
40 }
41 }) ;
42
运行结果
2、zip 操作符,合并多个观察对象的数据。并且允许 Func2()函数重新发送合并后的数据
运行效果:从效果图上可以看出,合并两个的观察对象数据项应该是相等的;如果出现了数据项不等的情况,合并的数据项以最小数据队列为准。
3、scan累加器操作符的使用
运行效果:
第一次发射得到1,作为结果与2相加;发射得到3,作为结果与3相加,以此类推,打印结果:
4、filter 过滤操作符的使用
运行效果
5、 消息数量过滤操作符的使用
take :取前n个数据
takeLast:取后n个数据
first 只发送第一个数据
last 只发送最后一个数据
skip() 跳过前n个数据发送后面的数据
skipLast() 跳过最后n个数据,发送前面的数据
效果图
6、elementAt 、elementAtOrDefault
运行结果
7、startWith() 插入数据
运行结果
8、delay操作符,延迟数据发送
9、Timer 延时操作符的使用
使用场景:xx秒后,执行xx
timer 返回一个 Observable , 它在延迟一段给定的时间后发射一个简单的数字0
timer 操作符默认在computation调度器上执行,当然也可以用 Scheduler 在定义执行的线程。
delay 、timer 总结:
相同点:delay 、 timer 都是延时操作符。
不同点:delay 延时一次,延时完成后,可以连续发射多个数据。timer延时一次,延时完成后,只发射一次数据。
10、interval 轮询操作符,循环发送数据,数据从0开始递增