我正在从Web API请求纯文本数据,这些数据可以大到约5 MB或小到约1 KB。
我对使用HttpUrlConnection
犹豫不决,因为超时的可能性增加,而且5 MB InputStream
的内存占用量也很大。
来自Android文档:
The download manager is a system service that handles long-running HTTP downloads.
5 MB是否算作“长时间运行?”似乎HttpUrlConnection
的预期用途是用于小数据包,而不是5 MB的文本。
答案 0 :(得分:2)
由于超时的可能性增加,我对使用HttpUrlConnection犹豫不决
我不确定您对超时的担忧。只要您以合理的速度下载数据,我就不明白为什么您的服务器会放弃您的连接。
现在,您可能会遇到用户移动和清理连接丢失的问题(例如,从WiFi切换到移动数据)。
和5 MB InputStream的内存占用
InputStream
不是5MB。对于那种大小的东西,你通常一次读取几KB,然后将结果写入文件。
5 MB计为"长期运行?"
这取决于你。它足够大,我考虑DownloadManager
。
似乎HttpUrlConnection的预期用途是用于小数据包,而不是5 MB的文本。
HttpURLConnection
用于从一个字节到一个太字节的所有内容,理论上超出范围。 DownloadManager
可能使用HttpURLConnection
。
DownloadManager
为您做的是: