如何取消从AsyncTask调用的HTTP GET请求?

sta*_*ej2 2 android http android-asynctask

我正在使用静态Web服务类来调用HTTP GET请求,并希望能够在用户按下后退按钮时取消请求/ AsyncTask.

我在doInBackground中定期检查isCancelled(),它适用于所有其他操作,但如果在用户回击时发生HTTP请求,则在收到结果或超时之前,任务不会被取消.

由于对WebServices.getDeviceId()的静态调用,我在HTTP客户端上没有句柄,所以我不能使用httpclient.getConnectionManager().shutdown(); 停止连接 有人对我如何解决这个问题有任何想法?

@Override
    protected Void doInBackground(Void... params) {
        if((mInstance.getDeviceId() == null) && !isCancelled()) {
            String deviceId = WebServices.getDeviceId();
        }

        return null;
    }
Run Code Online (Sandbox Code Playgroud)

vau*_*ult 7

如果要中断http请求,则需要对其进行引用并进行调用 yourHttpRequest.abort()

在WebServices类中,您不能添加类似的方法abortHttpRequest()并添加对当前HttpRequest的引用吗?

您可能需要管理http请求队列并中止正确的请求.