我有一个使用HttpClient处理相当长的下载的AsyncTask。如果用户完成启动它的Activity,我想停止执行此请求。我怎样才能做到这一点?
所以我启动了AsyncTask,HttpClient在execute()中,处理一个GET请求,有没有办法终止它?
答案 0 :(得分:5)
AsyncTask#cancel
以放弃待处理任务HttpUriRequest#abort()
取消http请求1.4。中止请求
在某些情况下,由于目标服务器上的高负载或客户端发出的并发请求太多,HTTP请求执行无法在预期的时间范围内完成。在这种情况下,可能需要提前终止请求并解除阻塞I / O操作中阻止的执行线程。通过调用HttpUriRequest#abort()方法,可以在执行的任何阶段中止由HttpClient执行的HTTP请求。此方法是线程安全的,可以从任何线程调用。当HTTP请求被中止时,它的执行线程 - 即使当前在I / O操作中被阻塞 - 也可以通过抛出InterruptedIOException来解除阻塞
答案 1 :(得分:4)
异步任务有一个您可以覆盖的取消调用。你可以从那里到达你的HttpClient并关闭流。