Handler::removeMessages 的 RxJava 模拟

RxJava analog for Handler::removeMessages

在我开始学习 RxJava 之前,我制作了一个带有 Handler 的 DelayAutoCompleteTextView,用于处理 TextChanged 事件。现在我重写代码,使用 Rx。但是我不能像以前那样做出同样的行为。

代码 Handler

@Override
protected void performFiltering(CharSequence text, int keyCode) {
    // remove pending query, because we have new one
    mHandler.removeMessages(MESSAGE_TEXT_CHANGED);

    // send with delay, to prevent big amount of network requests 
    // by removing unnecessary ones       
    mHandler.sendMessageDelayed(mHandler
            .obtainMessage(MESSAGE_TEXT_CHANGED, text), mAutoCompleteDelay);
}

我的 RxJava 代码:

getTextChangedObservable(searchView) // onNext(str) in onQueryTextChanged 
                    // poor copy of old implementation
                    .throttleLast(750, TimeUnit.MILLISECONDS) 
                    .distinctUntilChanged() // prevent duplicates
                    ... // process

谢谢,
安东

根据您的代码,您似乎在寻找去抖运算符:

getTextChangedObservable(searchView)
    .debounce(750, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
    .distinctUntilChanged()
    .subscribe(query -> {
        Log.d("Search", "Query " + query);
    });