0

我正在寻找一个更完整的库,使我能够取消长时间运行的 http 请求(例如文件上传,至少 100 MB 的数据)。

我见过 Volley 提供了一个取消 API,但它似乎只是处理不调用回调并且实际上并没有停止执行(我可能错了)也不建议长时间运行请求。

我也一直在查看 ION https://github.com/koush/ion,它应该能够处理取消,因为它返回一个可以取消的未来任务,但我真的不知道这是否是正确的选择对于我的情况。我不希望请求并行运行,而是按顺序运行。

我自己也编写了这样一个库(https://github.com/darko1002001/android-rest-client),我已经使用了很长时间并且运行良好,我已经做了一些解决方法以适应在我遇到的某些情况下取消请求和进度更新,但老实说,我并不觉得它足够干净或足够强大来满足这个要求。

我通常使用线程池来执行请求,但将长时间运行的请求移动到单个线程池队列中,以便其他短请求仍然执行而不会被阻塞,而是长时间操作。我觉得如果我仍然必须自己管理请求执行以对长时间运行的请求保持顺序,我的解决方法会更好。

有人可以分享他/她在构建此类功能方面的经验吗?关于使用什么的任何建议/建议?

4

2 回答 2

1

对于下载,请考虑使用Android 下载管理器。它使用简单,用户可以随时取消。

对于上传您可以使用Wakefull 服务并自己进行上传。HTTP 上传并不复杂,所以我就这么做了。根据 Android 版本,可以使用 Apache HTTP 库(2.3.3 之前)或 HTTPUrlconnection(一切更新)。另请注意,凌空代码是开源的,您可以借用他们的上传逻辑(或其部分):)

于 2014-03-25T09:31:20.793 回答
0

我一直在使用AsyncHttpClient

它支持取消方法,您可以在文档中找到详细信息

于 2014-03-25T09:37:54.410 回答