我正在寻找一个更完整的库,它可以让我取消长时间运行的http请求(示例文件上传至少100 MB的数据)。
我见过Volley提供了一个取消API,但它似乎只是处理不调用回调而不是实际停止执行(我可能错了)也不建议长时间运行请求。
我也一直在看ION https://github.com/koush/ion因为它返回了你可以取消的未来任务而被认为能够处理取消,但我真的不知道这是否是我案例的正确选择。我不希望请求并行运行,而是按顺序运行。
我自己也编写了这样一个图书馆(https://github.com/darko1002001/android-rest-client),我已经使用了很长时间了,而且工作效果很好,我做了一些解决方法来适应取消请求和进度更新我曾经拥有的一些案例,但说实话,我并不觉得它对于这个要求来说是干净或健壮的。
我通常使用线程池来执行请求,但是在单个线程池队列中移动长时间运行的请求,以便仍然可以执行其他短请求而不会被阻止但是长操作。我觉得如果我必须自己管理请求执行以便为长时间运行的请求顺序执行,我的解决方法会更好。
有人可以分享他/她构建此类功能的经验吗?关于使用什么的任何建议/建议?
答案 0 :(得分:1)
对于下载,请考虑使用Android Download Manager。它使用简单,用户可以随时取消。
上传您可以使用Wakefull Service并自行上传。 HTTP上传并不是非常复杂,所以我只是顺其自然。根据Android版本,可以使用Apache HTTP lib(2.3.3之前版本)或HTTPUrlconnection(所有版本更新)。另请注意,volley code是开源的,您可以借用他们的上传逻辑(或其中的部分内容):)
答案 1 :(得分:0)
我一直在使用AsyncHttpClient
它支持取消方法,您可以在doc
中找到详细信息