2014-09-11 47 views
0

我创建了AsyncTask来每次用户在EditText中输入内容时查询REST API。这导致在用户继续输入时发送一部分请求发送到REST API。有什么办法可以控制发送的请求吗? AsyncTask是最好的解决方案吗?我的其他选择是什么?每次使用AsyncTask查询API EditText发生变化

代码如下:

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(); 
} 
+0

你试过“IME_ACTION_DONE”上的搜索任务吗? – deniz 2014-09-11 06:27:06

+0

以便快速修复,如果您尝试使自动完成,您可以使您的API调用输入的第一个字母和其他输入更改,您可以在您的API调用的结果列表中搜索。 – savepopulation 2014-09-11 06:30:58

回答