Rxjava2.x 创建型-操作符

本文深入探讨RxJava中关键操作符的使用,包括just、fromArray、interval、fromIterable和Timer。通过实例代码,详细解释了每个操作符的功能及应用场景,如数据流创建、定时任务、序列转换等。

Just

just可以接收1到10个相同类型的参数

简单的运用just

Observable.just(1,2,3,4,5,6,7,8,9,10).subscribe(new Consumer<Integer>() {
    @Override
    public void accept(Integer integer) throws Exception {
        Log.e(TAG, "accept: "+integer);
    }
});

大家还记得subscribe的多个重载方法吗?上面的就是其中的一个。上面中的Consumer()中的accept 功能相当Observer中的onNext()方法,

运行的结果:

07-19 15:19:26.738 19445-19445/myutil.xhh.com.myrxjavatwo E/MainActivity: accept: 1
    accept: 2
07-19 15:19:26.739 19445-19445/myutil.xhh.com.myrxjavatwo E/MainActivity: accept: 3
    accept: 4
    accept: 5
    accept: 6
    accept: 7
    accept: 8
    accept: 9
    accept: 10

fromArray

个人觉得fromArray与just 很类似。不同的是fromArray参数是没有个数限制的,而just最多最多只能有10个。所以代码就不粘贴上来了。

interval

间隔多少发送一次请求。返回的是从0开始不断增加1的数。有多个重载方法:参数 :initialDelay:开始执行时的延迟,period  :执行后后面数字排放之间的时间间隔,unit  :initialDelay与period  的时间单位,scheduler  调节器。

代码如下:

Log.e(TAG, "interval: 开始" );
Observable observable=Observable.interval(8,2,TimeUnit.SECONDS);
observable.subscribe(new Consumer() {
    @Override
    public void accept(Object o) throws Exception {
        Log.e(TAG, "accept: "+o.toString() );
    }
});

结果:

07-23 16:01:32.124 3993-3993/myutil.xhh.com.myrxjavatwo E/MainActivity: interval: 开始

07-23 16:01:40.135 3993-4016/myutil.xhh.com.myrxjavatwo E/MainActivity: accept: 0
07-23 16:01:42.135 3993-4016/myutil.xhh.com.myrxjavatwo E/MainActivity: accept: 1
07-23 16:01:44.135 3993-4016/myutil.xhh.com.myrxjavatwo E/MainActivity: accept: 2
07-23 16:01:46.135 3993-4016/myutil.xhh.com.myrxjavatwo E/MainActivity: accept: 3

可以用来做计时器。

fromIterable 

参数一个Iterable 链接迭代序列, 返回的是序列中的子项。

ArrayList<String> str=new ArrayList<>();
String[] numberStr=new String[]{"a","b","c","d","e","f","g"};
for (int i = 0; i < numberStr.length; i++) {
    str.add(numberStr[i]);
}
Observable.fromIterable(str).subscribe(new Consumer<String>() {
    @Override
    public void accept(String s) throws Exception {
        Log.e(TAG, "accept: _______"+s);
    }
});

结果:

07-24 11:15:11.557 25231-25231/myutil.xhh.com.myrxjavatwo E/MainActivity: accept: _______a
    accept: _______b
    accept: _______c
    accept: _______d
    accept: _______e
    accept: _______f
    accept: _______g

Timer   在延迟多久后发一个特殊值。(跟Handler的postDelayed类似)

有着多个重载方法,参数:delay :开始执行时的延迟时间,TimeUnit :延迟的单位,Scheduler :调节器。

Log.e(TAG, "test2:    timer");
Observable.timer(5,TimeUnit.SECONDS).subscribe(new Consumer<Long>() {
    @Override
    public void accept(Long aLong) throws Exception {
        Log.e(TAG, "accept: "+aLong);
    }
});

结果:07-24 14:19:34.322 8034-8034/myutil.xhh.com.myrxjavatwo E/MainActivity: test2:    timer

07-24 14:19:39.341 8034-8068/myutil.xhh.com.myrxjavatwo E/MainActivity: accept: 0

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值