gpt4 book ai didi

android - 配置 AsyncTask 以用于自动完成搜索的最佳方法

转载 作者:行者123 更新时间:2023-11-29 20:11:48 25 4
gpt4 key购买 nike

我在 SearchView 的 onQueryTextChange 方法中调用 AsyncTask 并在列表中显示结果。搜索有效,但如果用户在搜索 View 中快速键入,偶尔会挂起一秒钟。我想进一步优化这种方法。由于它是一个自动完成搜索,当用户开始输入时,几个 AsyncTasks 会排队等待执行。但我只对最后一个搜索请求感兴趣。

目前,我正在做这样的事情

if (myAsyncTask != null)
myAsyncTask.cancel(true);

myAsyncTask = new MyAsyncTask(context,URL);

有更好的方法吗?如果可能的话,我想做这样的事情

myAsyncTask.executeOnExecutor(new OptimizedExectionerService);

OptimizedExectionerService 类应该取消池中所有挂起和正在运行的任务,并且只处理最后发出的请求。

最佳答案

使用具有合理延迟的处理程序(处理对编辑文本的输入)。

private static final int SEARCH_DELAY = 500;
private Handler mHandler = new Handler();
private SearchRunnable executeSearch = new SearchRunnable();

private queueSearch(String term) {
// Remove any previous searches
mHandler.removeCallbacks(executeSearch);

// Set the search term for the runnable
executeSearch.setSearchTerm(term);

// Schedule the search in half a second
mHandler.postDelayed(executeSearch, SEARCH_DELAY);
}

private class SearchRunnable implements Runnable {
String searchTerm = null;

public void setSearchTerm(String term) {
searchTerm = term;
}

@Override
public void run() {
//Execute Search here
new MyAsyncTask(context, searchTerm);
}
};

关于android - 配置 AsyncTask 以用于自动完成搜索的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34688425/

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