1. RxJava2 : 什么是觀察者模式
2. RxJava2 : 創(chuàng)建操作符(無關(guān)時(shí)間)
3. Rxjava2 : 創(chuàng)建操作符(有關(guān)時(shí)間)
4. Rxjava2 : 變換操作符
5. Rxjava2 : 判斷操作符
6. Rxjava2 : 篩選操作符
7. Rxjava2 : 合并操作符
8. Rxjava2 : do操作符
9. Rxjava2 : error處理
10. Rxjava2 : 重試
11. Rxjava2 : 線程切換
api | use |
---|---|
all | {{Observable.all}} |
contains | {{Observable.contains}} |
isEmpty | {{Observable.isEmpty}} |
defaultIfEmpty | {{Observable.defaultIfEmpty}} |
takeWhile / takeUntil | {{Observable.takeWhile}} |
all
- 判斷是否全部滿足,只有全部滿足的時(shí)候才會(huì)返回 true
Disposable subscribe = Observable.just(1, 2, 3)
.all(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) throws Exception {
return integer>2;
}
})
.subscribe(aBoolean -> Log.d(TAG, "aBoolean:" + aBoolean));
log
02-11 16:33:45.936 10199-10199/... D/SplashActivity: aBoolean:false
contains
- 判斷是否包含
Disposable subscribe = Observable.just(1, 2, 3, 4, 5)
.contains(1)
.subscribe(aBoolean -> Log.d(TAG, "aBoolean:" + aBoolean));
log
02-11 17:28:06.486 15538-15538/... D/SplashActivity: aBoolean:true
isEmpty
- 判斷是否為空
Disposable subscribe = Observable.just(1, 2, 3, 4, 5)
.isEmpty()
.subscribe(aBoolean -> Log.d(TAG, "aBoolean:" + aBoolean));
log
02-11 17:31:04.306 15894-15894/... D/SplashActivity: aBoolean:false
defaultIfEmpty
- 當(dāng)什么也不發(fā)送直接發(fā)送 complete 的時(shí)候,給與一個(gè)默認(rèn)值,如果只發(fā)送一個(gè) onError 的話,則這個(gè)默認(rèn)值不會(huì)起作用
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> e) throws Exception {
e.onComplete();
}
})
.defaultIfEmpty(1)
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "integer:" + integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError");
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
log
02-11 17:35:40.806 16324-16324/... D/SplashActivity: integer:1
02-11 17:35:40.806 16324-16324/... D/SplashActivity: onComplete
takeWhile
takeWhile
只發(fā)送滿足條件的,但一旦碰到不滿足的,后面的均不會(huì)發(fā)送,發(fā)送 complete 結(jié)束takeUntil
一直發(fā)送,直到發(fā)送到滿足條件的結(jié)束,并且,滿足條件的那一個(gè)也會(huì)發(fā)送,之后發(fā)送complete 結(jié)束
//takeWhile
Observable.just(1, 2, 3, 4, 5)
.takeWhile(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) throws Exception {
return integer != 4;
}
})
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "integer:" + integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError");
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
log
02-11 16:37:18.896 10620-10620/... D/SplashActivity: integer:1
02-11 16:37:18.896 10620-10620/... D/SplashActivity: integer:2
02-11 16:37:18.896 10620-10620/... D/SplashActivity: integer:3
02-11 16:37:18.896 10620-10620/... D/SplashActivity: onComplete
//takeUntil
Observable.just(1, 2, 3, 4, 5, 6)
.takeUntil(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) throws Exception {
return integer == 4;
}
})
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
Log.d(TAG, "integer:" + integer);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError");
}
@Override
public void onComplete() {
Log.d(TAG, "onComplete");
}
});
log
02-11 17:03:11.396 12703-12703/... D/SplashActivity: integer:1
02-11 17:03:11.396 12703-12703/... D/SplashActivity: integer:2
02-11 17:03:11.396 12703-12703/... D/SplashActivity: integer:3
02-11 17:03:11.396 12703-12703/... D/SplashActivity: integer:4
02-11 17:03:11.396 12703-12703/... D/SplashActivity: onComplete