【发布时间】:2014-09-11 06:16:09
【问题描述】:
我创建了一个 AsyncTask 来在每次用户在 EditText 中输入内容时查询 REST API。这会导致在用户不断输入时向 REST API 发送大量请求。我有什么方法可以控制发送的请求吗? AsyncTask 是这里最好的解决方案吗?我还有哪些其他选择?
代码如下:
private AsyncTask<Object, Object, Response> searchTask;
@Override
public void afterTextChanged(Editable s) {
this.search(s.getText().toString());
}
public void search(final String q) {
if (searchTask != null) {
searchTask.cancel(true);
}
searchTask = new AsyncTask<Object, Object, Response>() {
@Override
protected void onPreExecute() {
}
@Override
protected List<Transaction> doInBackground(Object... params) {
return retrofitService.findPerson(token, q);
}
@Override
protected void onPostExecute(Response response) {
// do stuff here with the response
}
};
searchTask.execute();
}
【问题讨论】:
-
你试过“IME_ACTION_DONE”上的搜索任务吗?
-
为了快速修复,如果您尝试自动完成,您可以只对输入的第一个字母进行 api 调用,对于其他输入更改,您可以在 api 调用的结果列表中搜索.
标签: android asynchronous android-asynctask retrofit