人生如果错了方向,停止就是进步。
RxJava Github基本用法都可以查考文档。
一.基本用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Observable<String> myObservaable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> t) { t.onNext("Hello"); t.onCompleted(); } }); Subscriber<String> mySubscriber = new Subscriber<String>() { @Override public void onNext(String t) { System.out.println("onNext " + t); } @Override public void onError(Throwable e) { } @Override public void onCompleted() { } }; myObservaable.subscribe(mySubscriber);
|
二.简洁写法:
1 2 3 4 5 6 7 8
| Observable<String> mObservable = Observable.just("Hello"); Action1<String> onNextAction = new Action1<String>() { @Override public void call(String t) { System.out.println(t); } }; mObservable.subscribe(onNextAction);
|
三.map,fliter和flatMap:
1 2 3 4 5 6 7 8 9 10 11 12
| Observable.just("Hello") .map(new Func1<String, String>() { @Override public String call(String t) { return t + " map"; } }).subscribe(new Action1<String>() { @Override public void call(String t) { System.out.println(t); } });
|
打印结果是Hello map;
1 2 3 4 5 6 7 8 9 10 11 12 13
| Integer[] data = {1, 2, 3, 4}; Observable.from(data) .filter(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer t) { return t > 2 ? true : false; } }).subscribe(new Action1<Integer>() { @Override public void call(Integer t) { System.out.println(t); } });
|
打印结果是3,4;
flatMap参考这里(详细介绍了所有用法,值得一看),
四.线程间的切换: