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

6万+

被折叠的 条评论
为什么被折叠?



