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

Zso*_*agy 5 android httpclient android-asynctask

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

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

sha*_*604 5

  1. 打电话AsyncTask#cancel放弃待处理的任务
  2. 根据HttpClient文档,用于HttpUriRequest#abort()中止http请求

1.4.中止请求

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


wal*_*lta 4

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

  • 它不会起作用。`HttpClient.Execute` 阻止调用。在 HttpClient 释放锁之前,不会调用“OnCancelled”。 (2认同)