“限制” onQueryTextChange的最佳方法是什么,以便我的performSearch()方法每秒仅调用一次,而不是每次用户键入一次?

public boolean onQueryTextChange(final String newText) {
    if (newText.length() > 3) {
        // throttle to call performSearch once every second
        performSearch(nextText);
    }
    return false;
}

最佳答案

以aherrick的代码为基础,我有一个更好的解决方案。不用更改 boolean 值“canRun”,而是在每次更改查询文本时声明一个可运行的变量并清除处理程序上的回调队列。这是我最终使用的代码:

@Override
public boolean onQueryTextChange(final String newText) {
    searchText = newText;

    // Remove all previous callbacks.
    handler.removeCallbacks(runnable);

    runnable = new Runnable() {
        @Override
        public void run() {
            // Your code here.
        }
    };
    handler.postDelayed(runnable, 500);

    return false;
}

10-07 19:23