Android函数响应式编程——必学的RxJava创建操作符create、just、from、interval、range、repeat

本文介绍了 RxJava 中创建 Observable 的六种方法,包括通过 create、just 和 from 方法直接创建,以及使用 interval、range 和 repeat 方法生成定时信号、整数序列和重复序列。

gradle

//    RxJava
    compile 'io.reactivex:rxjava:1.2.0'
    compile 'io.reactivex:rxandroid:1.2.1'

如果看了之前的文章,就知道了create、just、from3个操作符。

创建Observable(被观察者)的三种方法:

1.

rx.Observable observable = rx.Observable.create(new rx.Observable.OnSubscribe<String>() {
    @Override
    public void call(Subscriber<? super String> subscriber) {
        subscriber.onNext("1");
        subscriber.onNext("2");
        subscriber.onCompleted();
    }
});

2.

rx.Observable observable = rx.Observable.just("1","2");

3.

String[] s = {"1", "2"};
rx.Observable observable = rx.Observable.from(s);

这3个都是中规中矩创建被观察者的。接下来3个比较有个性。


4.interval:创建了一个每隔1秒向外发送一次信号的Observable(相当于定时器)。

rx.Observable observable = rx.Observable.interval(1, TimeUnit.SECONDS);

下面是观察者和注册

Action1<Long> onNextAction = new Action1<Long>() {
    @Override
    public void call(Long aLong) {
        Log.i("xbh", "第"+ aLong +"秒");
    }
};

observable.subscribe(onNextAction);

输出日志:

12-09 03:12:11.347 25586-25624/com.hdu.a15058124.homework3 I/xbh: 第0秒
12-09 03:12:14.345 25586-25624/com.hdu.a15058124.homework3 I/xbh: 第1秒
12-09 03:12:17.346 25586-25624/com.hdu.a15058124.homework3 I/xbh: 第2秒


5.range:创建一个发送指定范围整数的Observable,这里是0,1……9。一次性发送光,不和上面那个一样。(这个可以取代for循环)

rx.Observable observable = rx.Observable.range(0, 10);

输出日志:

12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 0
12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 1
12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 2
12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 3
12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 4
12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 5
12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 6
12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 7
12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 8
12-09 03:18:55.354 26073-26073/com.hdu.a15058124.homework3 I/xbh: 9


6.repeat:在上面的基础上,增加了个repeat(3)。意思就是重复3遍这个for循环呗。

rx.Observable observable = rx.Observable.range(0, 10).repeat(3);

输出日志:

12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 0
12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 1
12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 2
12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 3
12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 4
12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 5
12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 6
12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 7
12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 8
12-09 03:22:15.148 29323-29323/com.hdu.a15058124.homework3 I/xbh: 9
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 0
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 1
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 2
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 3
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 4
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 5
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 6
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 7
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 8
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 9
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 0
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 1
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 2
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 3
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 4
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 5
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 6
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 7
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 8
12-09 03:22:15.149 29323-29323/com.hdu.a15058124.homework3 I/xbh: 9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值