版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hbgaozhiwei/article/details/86541842
1、all():判断事件序列是否全部满足某个事件,如果都满足则返回true,反之返回false
方法签名:
public final Observable<T> ambWith(ObservableSource<? extends T> other)
Observable.just(1, 2, 3, 4)
.all(new Predicate < Integer > () {
@Override
public boolean test(Integer integer) throws Exception {
return integer < 5;
}
})
.subscribe(new Consumer < Boolean > () {
@Override
public void accept(Boolean aBoolean) throws Exception {
Log.d(TAG, "==================aBoolean " + aBoolean);
}
});
打印结果:
==================aBoolean true
2、takeWhile():可以设置条件,当某个数据满足条件时就会发送该数据,反之则不发送。
方法签名:
public final Observable<T> takeWhile(Predicate<? super T> predicate)
Observable.just(1, 2, 3, 4)
.takeWhile(new Predicate < Integer > () {
@Override
public boolean test(Integer integer) throws Exception {
return integer < 3;
}
})
.subscribe(new Consumer < Integer > () {
@Override
public void accept(Integer integer) throws Exception {
Log.d(TAG, "========================integer " + integer);
}
});
打印结果:
========================integer 1
========================integer 2
3、skipWhile():可以设置条件,当某个数据满足条件时,不发送该数据,反之则发送。
方法签名:
public final Observable<T> skipWhile(Predicate<? super T> predicate)
Observable.just(1, 2, 3, 4)
.skipWhile(new Predicate < Integer > () {
@Override
public boolean test(Integer integer) throws Exception {
return integer < 3;
}
})
.subscribe(new Consumer < Integer > () {
@Override
public void accept(Integer integer) throws Exception {
Log.d(TAG, "========================integer " + integer);
}
});
打印结果
========================integer 3
========================integer 4
4、takeUntil():可以设置条件,当事件满足此条件时,下一次的事件就不会被发送了。
方法签名:
public final Observable<T> takeUntil(Predicate<? super T> stopPredicate
Observable.just(1, 2, 3, 4, 5, 6)
.takeUntil(new Predicate < Integer > () {
@Override
public boolean test(Integer integer) throws Exception {
return integer > 3;
}
})
.subscribe(new Consumer < Integer > () {
@Override
public void accept(Integer integer) throws Exception {
Log.d(TAG, "========================integer " + integer);
}
});
打印结果:
========================integer 1
========================integer 2
========================integer 3
========================integer 4
5、skipUntil():当skipUntil()中的Observable发送事件了,原来的Observable才会发送事件给观察者。
方法签名:
public final <U> Observable<T> skipUntil(ObservableSource<U> other)
Observable.intervalRange(1, 5, 0, 1, TimeUnit.SECONDS)
.skipUntil(Observable.intervalRange(6, 5, 3, 1, TimeUnit.SECONDS))
.subscribe(new Observer < Long > () {
@Override
public void onSubscribe(Disposable d) {
Log.d(TAG, "========================onSubscribe ");
}
@Override
public void onNext(Long along) {
Log.d(TAG, "========================onNext " + along);
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "========================onError ");
}
@Override
public void onComplete() {
Log.d(TAG, "========================onComplete ");
}
});
打印结果:
========================onSubscribe
========================onNext 4
========================onNext 5
========================onComplete
从结果可以看出,skipUntil()里的Observable并不会发送事件给观察者。
6、sequenceEqual():判断两个Observable发送的事件是否相同。
方法签名:
public static <T> Single<Boolean> sequenceEqual(ObservableSource<? extends T> source1, ObservableSource<? extends T> source2)
......
Observable.sequenceEqual(Observable.just(1, 2, 3),
Observable.just(1, 2, 3))
.subscribe(new Consumer < Boolean > () {
@Override
public void accept(Boolean aBoolean) throws Exception {
Log.d(TAG, "========================onNext " + aBoolean);
}
});
打印结果:
========================onNext true
7、contains():判断事件序列中是否含有某个元素,如果有则返回true,如果没有则返回false.
方法签名:public final Single<Boolean> contains(final Object element)
Observable.just(1, 2, 3)
.contains(3)
.subscribe(new Consumer < Boolean > () {
@Override
public void accept(Boolean aBoolean) throws Exception {
Log.d(TAG, "========================onNext " + aBoolean);
}
});
打印结果:
========================onNext true
8、isEmpty():判断事件序列是否为空。
方法签名:public final Single<Boolean> isEmpty()
Observable.create(new ObservableOnSubscribe < Integer > () {
@Override
public void subscribe(ObservableEmitter < Integer > e) throws Exception {
e.onComplete();
}
})
.isEmpty()
.subscribe(new Consumer < Boolean > () {
@Override
public void accept(Boolean aBoolean) throws Exception {
Log.d(TAG, "========================onNext " + aBoolean);
}
});
打印结果:
========================onNext true
9、amb():amb()要传入一个Observable集合,但是只会发送最先发送事件的Observable中的事件,其余的Observable将会被丢弃。
方法签名:
public static <T> Observable<T> amb(Iterable<? extends ObservableSource<? extends T>> sources)
ArrayList < Observable < Long >> list = new ArrayList < > ();
list.add(Observable.intervalRange(1, 5, 2, 1, TimeUnit.SECONDS));
list.add(Observable.intervalRange(6, 5, 0, 1, TimeUnit.SECONDS));
Observable.amb(list)
.subscribe(new Consumer < Long > () {
@Override
public void accept(Long aLong) throws Exception {
Log.d(TAG, "========================aLong " + aLong);
}
});
打印结果:
========================aLong 6
========================aLong 7
========================aLong 8
========================aLong 9
========================aLong 10
10、defaultIfEmpty():如果观察者只发送一个onComplete()事件,则可以利用这个方法发送一个值。
方法签名:
public final Observable<T> defaultIfEmpty(T defaultItem)
Observable.create(new ObservableOnSubscribe < Integer > () {
@Override
public void subscribe(ObservableEmitter < Integer > e) throws Exception {
e.onComplete();
}
})
.defaultIfEmpty(666)
.subscribe(new Consumer < Integer > () {
@Override
public void accept(Integer integer) throws Exception {
Log.d(TAG, "========================onNext " + integer);
}
});
打印结果:
========================onNext 666