RxJava汇总--完善中。。。
来源:互联网 发布:数据库怎么加锁 编辑:程序博客网 时间:2024/06/07 09:07
基本用法
Observable.create(new Observable.OnSubscribe<String>(){ @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("safly"); subscriber.onCompleted(); } }).subscribe(new Subscriber<String>() { @Override public void onCompleted() { Log.i(TAG,"------onCodddddmpleted---------"); } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.i(TAG,"------s---------"+s); } }); Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("safly"); } }).subscribe(new Action1<String>() { @Override public void call(String o) { Log.i(TAG,"------onCodddddmplddeted---------"+o); } }); Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("safly"); } }).subscribe(new Observer<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.i(TAG,"------onCoddddfsflddeted---------"+s); } });
Just_map用法
/** * 只发出事件,不处理事件 */ Observable.just("safly1","safly2").subscribe(new Action1<String>() { @Override public void call(String s) { Log.i(TAG,"------s-----------"+s); } }); /** * 发出事件,处理事件 * 转换:将字符串转为integer对象 */ Observable.just("111","222") .map(new Func1<String, Integer>() { @Override public Integer call(String s) { return Integer.parseInt(s); } }).subscribe(new Action1<Integer>() { @Override public void call(Integer o) { Log.i(TAG,"---------o----------------"+o); } });
range用法
/** * 代替for循环 * 左闭右开 */ Observable.range(0,5).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i(TAG,"--------range------"+integer); } });
输出
07-03 11:55:55.333 26793-26793/? I/MainActivity: --------range------007-03 11:55:55.333 26793-26793/? I/MainActivity: --------range------107-03 11:55:55.333 26793-26793/? I/MainActivity: --------range------207-03 11:55:55.333 26793-26793/? I/MainActivity: --------range------307-03 11:55:55.333 26793-26793/? I/MainActivity: --------range------4
Observable.range(1, 10).elementAt(5).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i(TAG,"--------range------"+integer); } });
elementAt索引是5,所以输出
--------range------6
/**
* 执行2次循环
*/
Observable.range(0, 2) .repeat(2) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i(TAG, "repeat:" +integer.intValue()); } });
输出
07-03 12:04:53.070 29090-29090/? I/MainActivity: repeat:007-03 12:04:53.070 29090-29090/? I/MainActivity: repeat:107-03 12:04:53.070 29090-29090/? I/MainActivity: repeat:007-03 12:04:53.071 29090-29090/? I/MainActivity: repeat:1
interval、timer
Observable.interval(2, TimeUnit.SECONDS).subscribe(new Action1<Long>() { @Override public void call(Long aLong) { Log.i(TAG,"--------interval------"+aLong); } });
输出
07-03 12:10:40.950 30756-30775/? I/MainActivity: --------interval------007-03 12:10:42.950 30756-30775/? I/MainActivity: --------interval------107-03 12:10:44.949 30756-30775/? I/MainActivity: --------interval------2。。。。循环下去
timer 2妙后执行一次
Observable.timer(2,TimeUnit.SECONDS).subscribe(new Action1<Long>() { @Override public void call(Long aLong) { Log.i(TAG,"--------timer------"+aLong); } });
输出
07-03 12:13:04.484 31733-31760/? I/MainActivity: --------timer------0
defer
String i = "10" ; Observable.defer(new Func0<Observable<String>>() { @Override public Observable<String> call() { i = "11" ; return Observable.just(i); } }).subscribe(new Action1<String>() { @Override public void call(String o) { Log.i( TAG , "--defer after--" + o ); } });
defer操作符是直到有订阅者订阅时,才通过Observable的工厂方法创建Observable并执行,defer操作符能够保证Observable的状态是最新的,而defer是在订阅者订阅时才创建Observable,此时才进行真正的赋值操作
输出
07-03 12:15:15.052 32379-32379/? I/MainActivity: --defer after--11
FutureTask
/** * 异步任务 */ final FutureTask futureTask = new FutureTask<Integer>(new Callable<Integer>() { @Override public Integer call() throws Exception { Thread.sleep(5000); return 11111; } }); Scheduler.Worker worker = Schedulers.io().createWorker(); worker.schedule(new Action0() { @Override public void call() { futureTask.run(); } }); Observable.from(futureTask) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<Integer>() { @Override public void onCompleted() { Log.i( TAG , "--FutureTask onCompleted--" ); } @Override public void onError(Throwable e) { Log.i( TAG , "--FutureTask onNext--" + e.getMessage() ); } @Override public void onNext(Integer integer) { Log.i( TAG , "--FutureTask onNext--" + integer ); } });
输出
07-03 12:15:20.059 32379-32379/? I/MainActivity: --FutureTask onNext--11111
filter
/**
* filter过滤
* distinct去重复
*/
Observable.just(1,2,3,4,5,1,2,3,4,5).filter(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { return integer%2 == 1; } }) .distinct() .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i( TAG , "--filter onNext--" + integer ); } });
输出
07-03 12:25:53.828 3111-3111/? I/MainActivity: --filter onNext--107-03 12:25:53.828 3111-3111/? I/MainActivity: --filter onNext--307-03 12:25:53.828 3111-3111/? I/MainActivity: --filter onNext--5
take、takeWhile
Observable.range(0,5).take(3).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i( TAG , "--take onNext--" + integer ); } });
输出:
07-03 12:28:54.786 4065-4065/? I/MainActivity: --take onNext--007-03 12:28:54.786 4065-4065/? I/MainActivity: --take onNext--107-03 12:28:54.786 4065-4065/? I/MainActivity: --take onNext--2
Observable.range(0,10).take(7).takeWhile(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { return integer<5; } }).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i( TAG , "--takeWhile onNext--" + integer ); } });
输出
07-03 12:28:54.787 4065-4065/? I/MainActivity: --takeWhile onNext--007-03 12:28:54.787 4065-4065/? I/MainActivity: --takeWhile onNext--107-03 12:28:54.787 4065-4065/? I/MainActivity: --takeWhile onNext--207-03 12:28:54.787 4065-4065/? I/MainActivity: --takeWhile onNext--307-03 12:28:54.787 4065-4065/? I/MainActivity: --takeWhile onNext--4
skip、skipWhile
Observable.range(0,5).skip(3).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i( TAG , "--skip onNext--" + integer ); } });
输出
07-03 12:32:01.436 5035-5035/? I/MainActivity: --skip onNext--307-03 12:32:01.436 5035-5035/? I/MainActivity: --skip onNext--4
/** * //舍弃原Observable发射的数据,直到发射的数据>=6,才继续发射 */ Observable.range(0,10).take(7).skipWhile(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { return integer<6; } }).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i( TAG , "--skipWhile onNext--" + integer ); } });
输出
07-03 12:32:01.436 5035-5035/? I/MainActivity: --skipWhile onNext--6
skipLast、takeLast
/** * skipLast 正好和skip 相反,忽略最后产生的n个数据项 */ Observable.range(0,5).skipLast(2).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i( TAG , "--skipLast onNext--" + integer ); } });
07-03 12:36:01.928 6042-6042/? I/MainActivity: --skipLast onNext--007-03 12:36:01.928 6042-6042/? I/MainActivity: --skipLast onNext--107-03 12:36:01.928 6042-6042/? I/MainActivity: --skipLast onNext--2
Observable.range(0,5).takeLast(2).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i( TAG , "--takeLast onNext--" + integer ); } });
07-03 12:36:01.928 6042-6042/? I/MainActivity: --takeLast onNext--307-03 12:36:01.929 6042-6042/? I/MainActivity: --takeLast onNext--4
all、exists、contains
Observable.just(1,2,3,4,5).all(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { return integer>3; } }).subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { Log.i( TAG , "--all onNext--" + aBoolean ); } });
输出
07-03 12:42:10.185 7557-7557/? I/MainActivity: --all onNext--false
Observable.just(1,2,3,4,5).exists(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { return integer>3; } }).subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { Log.i( TAG , "--exists onNext--" + aBoolean ); } });
输出
-03 12:42:10.185 7557-7557/? I/MainActivity: --exists onNext--true
Observable.just(4,5,6) .contains(4) .subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { Log.v(TAG, "contains(4):"+aBoolean); } });
输出
07-03 12:42:10.186 7557-7557/? V/MainActivity: contains(4):true
concat、concatWith
Observable<Integer> just1 = Observable.just(1, 2, 3); Observable<Integer> just2 = Observable.just(4, 5, 6); Observable.concat(just1,just2).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i( TAG , "--concat onNext--" + integer ); } }); just1.concatWith(just2).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i( TAG , "--concatWith onNext--" + integer ); } });
输出
07-03 12:42:10.188 7557-7557/? I/MainActivity: --concat onNext--107-03 12:42:10.188 7557-7557/? I/MainActivity: --concat onNext--207-03 12:42:10.188 7557-7557/? I/MainActivity: --concat onNext--307-03 12:42:10.188 7557-7557/? I/MainActivity: --concat onNext--407-03 12:42:10.188 7557-7557/? I/MainActivity: --concat onNext--507-03 12:42:10.188 7557-7557/? I/MainActivity: --concat onNext--607-03 12:42:10.189 7557-7557/? I/MainActivity: --concatWith onNext--107-03 12:42:10.189 7557-7557/? I/MainActivity: --concatWith onNext--207-03 12:42:10.189 7557-7557/? I/MainActivity: --concatWith onNext--307-03 12:42:10.189 7557-7557/? I/MainActivity: --concatWith onNext--407-03 12:42:10.189 7557-7557/? I/MainActivity: --concatWith onNext--507-03 12:42:10.189 7557-7557/? I/MainActivity: --concatWith onNext--6
toList、toMap、toMultimap
Observable<List<Integer>> listObservable = Observable.range(0, 5).toList(); listObservable.subscribe(new Action1<List<Integer>>() { @Override public void call(List<Integer> integers) { for (int i : integers){ Log.i(TAG,"------i-------"+i); } } });
输出
07-03 12:42:10.190 7557-7557/? I/MainActivity: ------i-------007-03 12:42:10.190 7557-7557/? I/MainActivity: ------i-------107-03 12:42:10.190 7557-7557/? I/MainActivity: ------i-------207-03 12:42:10.190 7557-7557/? I/MainActivity: ------i-------307-03 12:42:10.191 7557-7557/? I/MainActivity: ------i-------4
Observable.just(1,2,3).toMap(new Func1<Integer, String>() { @Override public String call(Integer integer) { Log.i(TAG,"--call1--"+integer); return "key--"+integer; } }, new Func1<Integer, String>() { @Override public String call(Integer integer) { Log.i(TAG,"--call2--"+integer); return "val--"+integer; } }).subscribe(new Action1<Map<String, String>>() { @Override public void call(Map<String, String> stringStringMap) { Log.i(TAG,"--stringStringMap--"+stringStringMap.toString()); } });
输出
07-03 12:42:10.191 7557-7557/? I/MainActivity: --call1--107-03 12:42:10.191 7557-7557/? I/MainActivity: --call1--207-03 12:42:10.192 7557-7557/? I/MainActivity: --call1--307-03 12:42:10.191 7557-7557/? I/MainActivity: --call2--107-03 12:42:10.191 7557-7557/? I/MainActivity: --call2--207-03 12:42:10.192 7557-7557/? I/MainActivity: --call2--307-03 12:42:10.192 7557-7557/? I/MainActivity: --stringStringMap--{key--1=val--1, key--2=val--2, key--3=val--3}
Observable.just(1,2,3).toMultimap(new Func1<Integer, String>() { @Override public String call(Integer integer) { Log.i(TAG,"--toMultimap call1--"+integer); return "key--"+integer; } }, new Func1<Integer, String>() { @Override public String call(Integer integer) { Log.i(TAG,"--toMultimap call2--"+integer); return "val--"+integer; } }).subscribe(new Action1<Map<String, Collection<String>>>() { @Override public void call(Map<String, Collection<String>> stringCollectionMap) { Log.i(TAG,"--stringCollectionMap--"+stringCollectionMap.toString()); } });
输出
07-03 12:51:21.684 10195-10195/? I/MainActivity: --toMultimap call1--107-03 12:51:21.684 10195-10195/? I/MainActivity: --toMultimap call1--207-03 12:51:21.684 10195-10195/? I/MainActivity: --toMultimap call1--307-03 12:51:21.684 10195-10195/? I/MainActivity: --toMultimap call2--107-03 12:51:21.684 10195-10195/? I/MainActivity: --toMultimap call2--207-03 12:51:21.684 10195-10195/? I/MainActivity: --toMultimap call2--307-03 12:51:21.684 10195-10195/? I/MainActivity: --stringCollectionMap--{key--1=[val--1], key--2=[val--2], key--3=[val--3]}
nest
Observable.range(0,4).nest().subscribe(new Action1<Observable<Integer>>() { @Override public void call(Observable<Integer> integerObservable) { integerObservable.subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i(TAG,"--nest2--"+integer); } }); } });
输出
07-03 12:51:21.685 10195-10195/? I/MainActivity: --nest2--007-03 12:51:21.685 10195-10195/? I/MainActivity: --nest2--107-03 12:51:21.685 10195-10195/? I/MainActivity: --nest2--207-03 12:51:21.685 10195-10195/? I/MainActivity: --nest2--3
flatMap用法
Observable.just(2,3,4).flatMap(new Func1<Integer, Observable<Integer>>() { @Override public Observable<Integer> call(Integer integer) { Observable<Integer> just = Observable.just(integer+1); return just; } }).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i(TAG,"--flatMap--"+integer); } });
输出
07-03 12:51:21.685 10195-10195/? I/MainActivity: --flatMap--307-03 12:51:21.685 10195-10195/? I/MainActivity: --flatMap--407-03 12:51:21.685 10195-10195/? I/MainActivity: --flatMap--5
flatMapIterable用法
Observable.just(2,3,5) .flatMapIterable(new Func1<Integer, Iterable<String>>() { @Override public Iterable<String> call(Integer integer) { List<String> list = new ArrayList<>(); list.add(integer.toString()); return list; } }).subscribe(new Action1<String>() { @Override public void call(String s) { Log.i(TAG,"--flatMapIterable--"+s); } });
输出
07-03 12:51:21.685 10195-10195/? I/MainActivity: --flatMapIterable--207-03 12:51:21.685 10195-10195/? I/MainActivity: --flatMapIterable--307-03 12:51:21.685 10195-10195/? I/MainActivity: --flatMapIterable--5
阅读全文
0 0
- RxJava汇总--完善中。。。
- Rxjava-Android资料汇总
- Rxjava操作符汇总
- Rxjava-Android资料汇总
- Rxjava-Android资料汇总
- RxJava + Retrofit 总结汇总
- Android中jar包常见疑难杂症汇总及解决方案(待完善)
- 互联网时代常用网站资源整理汇总(一直在完善中)
- 学习RxJava(资料汇总)
- 任务单完善中
- 经典小函数实现汇总(陆续完善)
- 机房收费系统完善问题汇总
- 产品外观设计在线资源汇总(待完善)
- RxJava中多线程机制
- android中RxJava学习
- Android中RxJava详解
- Android中调试RxJava
- RxJava中create源码
- 提高网页加载速度的方法
- Jenkins入门系列之——02第二章 Jenkins安装与配置
- python3 [爬虫入门实战] 爬虫之爬取盘多多文档(百万数据)
- 2017上
- 基于HTML5的五子棋游戏
- RxJava汇总--完善中。。。
- 【MyEclipse】设置JSP默认编辑器
- 2748: [HAOI2012]音量调节
- PAT练习-人口普查
- python002简单的输入输出
- 前端开发:关于引用外部文件的顺序问题
- Android studio 打开新文件 同一个窗口
- yolo v2文件结构和源码的简单梳理
- 机房模拟赛 2017.7.3