1.startWith:给你被观察者的数据流前再增加一点同类型的数据,这里增加的是1,2

rx.Observable.just(3, 4, 5).startWith(1, 2)        .subscribe(new Action1() {            @Override            public void call(Integer integer) {                Log.i("xbh", integer + "");            }        });

输出

12-09 07:17:18.439 18450-18450/com.hdu.a15058124.homework3 I/xbh: 1
12-09 07:17:18.439 18450-18450/com.hdu.a15058124.homework3 I/xbh: 2
12-09 07:17:18.439 18450-18450/com.hdu.a15058124.homework3 I/xbh: 3
12-09 07:17:18.439 18450-18450/com.hdu.a15058124.homework3 I/xbh: 4
12-09 07:17:18.439 18450-18450/com.hdu.a15058124.homework3 I/xbh: 5


2.merge:把多个被观察者合并到一个被观察者身上一起输出,但是可能会让合并的被观察者发射的数据交错。

rx.Observable obs1 = rx.Observable.just(1,2,3).subscribeOn(Schedulers.io());rx.Observable obs2 = rx.Observable.just(4,5,6);rx.Observable.merge(obs1,obs2).subscribe(new Action1() {    @Override    public void call(Integer integer) {        Log.i("xbh", integer + "");    }});

输出

12-09 07:18:35.919 19718-19718/? I/xbh: 4
12-09 07:18:35.919 19718-19718/? I/xbh: 5
12-09 07:18:35.919 19718-19718/? I/xbh: 6
12-09 07:18:35.921 19718-19758/? I/xbh: 1
12-09 07:18:35.921 19718-19758/? I/xbh: 2
12-09 07:18:35.921 19718-19758/? I/xbh: 3


3.concat:也是合并数据,但是严格按照顺序发射,一个被观察者数据发送完前不会发送后一个被观察者的数据。

rx.Observable obs1 = rx.Observable.just(1,2,3).subscribeOn(Schedulers.io());rx.Observable obs2 = rx.Observable.just(4,5,6);rx.Observable.concat(obs1,obs2).subscribe(new Action1() {    @Override    public void call(Integer integer) {        Log.i("xbh", integer + "");    }});

12-09 07:22:43.374 23503-23554/com.hdu.a15058124.homework3 I/xbh: 1
12-09 07:22:43.374 23503-23554/com.hdu.a15058124.homework3 I/xbh: 2
12-09 07:22:43.374 23503-23554/com.hdu.a15058124.homework3 I/xbh: 3
12-09 07:22:43.374 23503-23554/com.hdu.a15058124.homework3 I/xbh: 4
12-09 07:22:43.374 23503-23554/com.hdu.a15058124.homework3 I/xbh: 5
12-09 07:22:43.374 23503-23554/com.hdu.a15058124.homework3 I/xbh: 6


4.zip合并多个被观察者发出的数据项,但是如果一个被观察者的数据更多,多出来的那部分不会被发送。

rx.Observable obs1 = rx.Observable.just(1,2,3,4,5);rx.Observable obs2 = rx.Observable.just("a","b","c");rx.Observable.zip(obs1,obs2,new Func2,String,String>() {    @Override    public String call(Integer integer, String s) {        return integer + s;    }}).subscribe(new Action1() {    @Override    public void call(String s) {        Log.i("xbh", s);    }});

输出:

12-09 07:28:28.115 28857-28857/com.hdu.a15058124.homework3 I/xbh: 1a
12-09 07:28:28.115 28857-28857/com.hdu.a15058124.homework3 I/xbh: 2b
12-09 07:28:28.115 28857-28857/com.hdu.a15058124.homework3 I/xbh: 3c


5.combineLatest:把第一个被观察者最新的数据,和另外的观察者相连。

rx.Observable obs1 = rx.Observable.just(1,2,3,4,5,6,7,8,9);rx.Observable obs2 = rx.Observable.just("a","b","b");rx.Observable.combineLatest(obs1,obs2,new Func2,String,String>() {    @Override    public String call(Integer integer, String s) {        return integer + s;    }}).subscribe(new Action1() {    @Override    public void call(String s) {        Log.i("xbh", s);    }});

输出:

12-09 07:29:14.421 29655-29655/? I/xbh: 9a
12-09 07:29:14.421 29655-29655/? I/xbh: 9b
12-09 07:29:14.421 29655-29655/? I/xbh: 9b

更多相关文章

  1. android-market-api
  2. 数据存储之SharedPreferences存储——第一行代码Android学习笔记
  3. Bundle使用心得
  4. [转载]Android(安卓)ContentProvider和Uri详解 (绝对全面)
  5. android 用gpio作为pwm输出控制led背光
  6. 【技术直通车】Spatialite for Android编译及测试
  7. android JSON解析数据 android解析天气预报
  8. android fragment于fragment之间通信
  9. Android(安卓)Arch LifeCycle用法详解与源码解析

随机推荐

  1. 从Android浏览器(并不是Appliaction里面
  2. android TextView属性汇总
  3. 建立一个简单的android涂鸦工程
  4. ImageView的属性android:scaleType
  5. Android(安卓)元素居中
  6. 《淘宝客户端 for Android》项目实战 htm
  7. Android(安卓)5.0 默认水波纹背景属性,可
  8. android adb shell 命令大全
  9. Android:WebView与Javascript交互(相互调用
  10. 利用oom_adj提高Application所在进程的优