Buffer
Buffer操作符是将要发送的数据按照固定的大小进行新的封装,然后将这些封装好的数据在发射出去,发射出去的数据不是一个单独的数据,而是一个集成。
原理图如下:
Buffer操作符是将要发送的数据按照固定的大小进行新的封装,然后将这些封装好的数据在发射出去,发射出去的数据不是一个单独的数据,而是一个集成。其中的skip参数代表每发射一次数据,就跳过skip数据之后,进行新的数据封装,然后发射数据。
原理图如下:
Buffer操作符的使用如下:
@Override
protected void createObservable() {
super.createObservable();
Observable observable = Observable.just(1, 2, 3, 4, 5, 6, 7, 8);
if (mRandom == BufferDetailActivity.MAX) {
mObservable = observable.buffer(2, 3);
} else if (mRandom == BufferDetailActivity.MIN) {
mObservable = observable.buffer(3);
}
}
运行代码,结果如下:
FlatMap
FlatMap操作符是将从Observable发射出的数据,按照一定的规则重新封装为一个新的Observable在发射出去。需要注意的是最后发射出去的数据有可能是交错的。
原理图如下:
FlatMap操作符的使用如下:
@Override
protected void createObservable() {
super.createObservable();
mObservable = Observable.just(1, 2, 3, 4, 5).flatMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(I