我正在使用LiveSDK,我正在调试一些与取消下载相关的东西并遇到了一个奇怪的行为:当调用InputStrem.close()时,它需要很长时间,与正在下载的文件大小成比例,当我关闭它立即关闭的InputStream时,我写的用于从互联网上下载文件的其他方法,所以这对我来说真的很奇怪。 有没有人知道这会发生什么?
我遇到了这个link,可能有人帮助理解这个问题,但我做不到。
答案 0 :(得分:0)
问题是使用的流是ContentLengthInputStream,文档说明如下:
“请注意,即使close被调用,此类也永远不会关闭底层流。相反,它会在关闭时读取其限制的”结束“,这样可以无缝执行后续HTTP 1.1请求,而不是要求客户记住阅读回复的全部内容。“
我没有找到帮助我理解这个类真正起作用的文档或其他东西,但是这个类的close方法并没有真正关闭它,这真的不直观。要强制停止下载,必须调用 HttpApiRequest.abort(),并且InputStream将自动关闭。