有没有办法阻止HttpClient在AsyncTask中的执行?

时间:2011-06-22 17:58:38

标签: android httpclient android-asynctask

我有一个使用HttpClient处理相当长的下载的AsyncTask。如果用户完成启动它的Activity,我想停止执行此请求。我怎样才能做到这一点?

所以我启动了AsyncTask,HttpClient在execute()中,处理一个GET请求,有没有办法终止它?

2 个答案:

答案 0 :(得分:5)

  1. 致电AsyncTask#cancel以放弃待处理任务
  2. 根据HttpClient docs,使用HttpUriRequest#abort()取消http请求
  3.   

    1.4。中止请求

         

    在某些情况下,由于目标服务器上的高负载或客户端发出的并发请求太多,HTTP请求执行无法在预期的时间范围内完成。在这种情况下,可能需要提前终止请求并解除阻塞I / O操作中阻止的执行线程。通过调用HttpUriRequest#abort()方法,可以在执行的任何阶段中止由HttpClient执行的HTTP请求。此方法是线程安全的,可以从任何线程调用。当HTTP请求被中止时,它的执行线程 - 即使当前在I / O操作中被阻塞 - 也可以通过抛出InterruptedIOException来解除阻塞

答案 1 :(得分:4)

异步任务有一个您可以覆盖的取消调用。你可以从那里到达你的HttpClient并关闭流。