throttleWithTimeout
和debounce
是一个意思:
假设指定时间为1秒, 那么被观察者发送第一条数据时,等待1秒之后仍然没有发送第二条数据,那么观察者将收到该数据,如果还没到1秒钟就重新发送了数据,那么第一条数据就被取消发送。
RxBinding
和throttleWithTimeout
相结合或者RxBinding
和debounce
相结合都可以对搜索进行优化。
代码如下:
final EditText telphone = findViewById(R.id.telphone);
final TextView search_result = findViewById(R.id.search_result);
RxTextView.textChanges(telphone)
//.throttleWithTimeout(2, TimeUnit.SECONDS)
.debounce(2, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<CharSequence>() {
@Override
public void accept(CharSequence charSequence) throws Exception {
search_result.setText("搜索结果:"+charSequence);
}
});