(三)RxJava操作符:Buffer

时间:2021-01-27 17:48:36
博客首页


Buffer操作符: (三)RxJava操作符:Buffer
1、buffer(count):每接收到count个数据包裹,将这count个包裹打包,发送给订阅者       案例:点击按钮达到指定次数后,触发某事件(即:View的N连击事件)
RxView.clicks(btn_buffer_count)
.buffer(3)
.compose(this.<List<Void>>bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<List<Void>>() {
@Override
public void call(List<Void> voids) {
Toast.makeText(BufferFragment.this.getActivity(), R.string.des_demo_buffer_count, Toast.LENGTH_SHORT).show();
}
});

2、Buffer(count , skip):每接收到count个数据后,将该count的个数据打包,并跳过第skip个数据,发送给订阅者     案例:输入123456 , 两两发送,并跳过之后的一个数据,即最后订阅者接收到[1,2] [4,5] 两个数据包裹, 3和6 分别被跳过
Observable.from(chs)
.buffer(2, 3)
.compose(this.<List<Character>>bindToLifecycle())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<List<Character>>() {

@Override
public void call(List<Character> characters) {
tv_output.setText(tv_output.getText() + characters.toString());
}
});
效果图:
(三)RxJava操作符:Buffer (三)RxJava操作符:Buffer
源码: https://github.com/cn-ljb/rxjava_for_android