中止HttpGet在Android 2.2及以下版本上不起作用

中止HttpGet在Android 2.2及以下版本上不起作用,android,apache,http,sockets,Android,Apache,Http,Sockets,我正在android上使用ApacheHTTP类执行一个长期存在的HTTP-GET请求。由于我想随时中断此请求,因此我从另一个线程(从主线程)对此HttpGet调用abort()。HttpClient.execute()的阻塞调用返回,因为立即抛出IOException。在安卓2.3上,一切都如我所料 当我在Android 2.2上运行相同的代码(在HTC Desire和Emulator上测试)时,不会引发异常。加载线程仍在阻塞。我没有机会打断它 我的第一个猜测是,安卓2.2使用的是Apache

我正在android上使用ApacheHTTP类执行一个长期存在的HTTP-GET请求。由于我想随时中断此请求,因此我从另一个线程(从主线程)对此HttpGet调用abort()。HttpClient.execute()的阻塞调用返回,因为立即抛出IOException。在安卓2.3上,一切都如我所料

当我在Android 2.2上运行相同的代码(在HTC Desire和Emulator上测试)时,不会引发异常。加载线程仍在阻塞。我没有机会打断它

我的第一个猜测是,安卓2.2使用的是Apache HTTP客户端的旧版本。因此,我将最新版本作为一个库(具有不同的名称空间)包含进来,并检查了我的导入。-->同样的结果


任何想法,为什么它不能在android 2.2(可能更早)上工作?

可靠地中止HTTP请求:向您的HttpClient提供ClientConnectionManager,并在ClientConnectionManager上调用#shutdown()中止(所有)请求。这通常会使请求变得松散。嗨,Jens,谢谢你的回答!我尝试调用myHttpClient.getConnectionManager().shutdown()而不是myRequest.abort()。但是我的加载线程仍然阻塞,直到达到超时。啊,快照,忘记了-你也需要将超时设置为某个值(非零),然后关机应该可以工作。基本上,socket read没有对中断或2.2中的任何类似内容给予丝毫关注。我想这是他们解决的问题,我发现了关于这个话题的不同思路。他们建议创建一个新的SocketFactory并在阻塞套接字上调用#shutdownInput()。我的第一次尝试成功了,所以我想我要试一试。在以下位置找到此文件:。