我正在使用Android loopj Async Task从服务器访问数据。
我正在尝试在autocompleteText视图上实现它,即当用户键入它时,它将在我的数据库中搜索并使用适配器在ListView中列出结果。一切正常。
但是我需要在新任务运行时取消之前的所有请求。即如果用户键入“che”然后新的AsyncHttpClient运行并启动Web服务,则用户输入“chem”然后我需要取消所有以前/正在运行的AsyncHttpClients。我
有什么想法吗?
这是我的代码
public void getValues(String movie){
AsyncHttpClient client = new AsyncHttpClient();
RequestParams webparams = new RequestParams();
webparams.put("fn", "searchMovies");
webparams.put("movie", movie);
client.post(domain, webparams, new AsyncHttpResponseHandler() {
@Override
public void onStart() {
}
@Override
public void onSuccess(String response) {
//dialog.dismiss();
try {
JSONObject obj = new JSONObject(response);
...
...
}
catch {}
@Override
public void onFailure(Throwable e, String response) {
Toast.makeText(SearchActivity.this,"Error Occured ! Please try again.",Toast.LENGTH_SHORT).show();
cd.goHome(SearchActivity.this);
}
});
}
答案 0 :(得分:5)
请查看AsyncHttpClient
类方法的此方法:cancelRequest()。
您可以取消与Context
关联的任何待处理(和中断运行)请求。
这意味着您必须在请求中传递Context
,否则它们将不会被取消。