2
我调用abort(),并且在execute()中阻塞的线程不会解除阻塞,直到超时并发生异常。它可能需要10秒以上,所以这是一个很大的问题。Android(2.1)HttpGet.abort()不工作
我环顾了一会儿,我无法找到答案。
文档说abort()应该导致execute()阻止I/O立即解除阻塞。研究表明,这个问题刚刚解决。
当然,我从不同的线程调用abort()和execute()。我的代码没有特别之处,所以我不会浪费空间列出它。
我发现的一些帖子暗示了与HttpClient下方的套接字等有关的内容,但是这些内容都不起作用。
谢谢您的建议。我不需要超时,我想让用户取消一个http请求,如果他们愿意的话。我想我找到了问题:当我中止时线程不在I/O调用中,它在TrustManager构造函数中。这是有道理的,因为我使用的是https。我会进一步研究它,但是这个具体问题已经解决,因为它不是真正的问题。 Oopsies ... – Jin
更新:是的,我刚刚将keystore init代码移到了发生在执行execute()之前的地方。 abort()的工作方式与阻塞I/O一样。现在唯一的问题是由于密钥库初始化,应用程序启动缓慢。我猜想一个启动画面或一些不可取消的进度指示器将是... – Jin