Android - loopj异步任务取消

时间:2014-02-15 10:01:48

标签: android web-services android-asynctask

我正在使用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);
    }
    });

}

1 个答案:

答案 0 :(得分:5)

请查看AsyncHttpClient类方法的此方法:cancelRequest()

您可以取消与Context关联的任何待处理(和中断运行)请求。 这意味着您必须在请求中传递Context,否则它们将不会被取消。