gpt4 book ai didi

java - Handler::removeMessages 的 RxJava 模拟

转载 作者:行者123 更新时间:2023-11-30 08:46:19 26 4
gpt4 key购买 nike

在我开始学习 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);
});

关于java - Handler::removeMessages 的 RxJava 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32911715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com