在我的应用程序中,我想同时处理几个文件的下载。 为此,我将启动多个服务,每个请求一个。 我不确定,Android是否同时支持http请求?
在这种情况下,每个请求有一个HTTPClient是好习惯还是坏习惯?
非常感谢你的帮助!
答案 0 :(得分:18)
HttpClient不是异步的,本身不支持并行连接。您可以拥有多个线程,每个线程使用单独的HttpClient实例执行下载。
您可能还想查看ExecutorService:http://developer.android.com/reference/java/util/concurrent/ExecutorService.html
答案 1 :(得分:5)
当配备池化连接管理器(如ThreadSafeClientConnManager
)时,HttpClient
可用于使用多个执行线程同时执行多个请求。
以下是有关如何使用它的完整示例:2.9. Multithreaded request execution.
更新:花费了一段时间,但ThreadSafeClientConnManager
现已弃用(请参阅以下Apache Http Client Removal摘录):
Android 6.0版本删除了对Apache HTTP客户端的支持。如果您的应用使用此客户端并定位到Android 2.3(API级别9)或更高版本,请改用HttpURLConnection类。此API更有效,因为它通过透明压缩和响应缓存减少了网络使用,并最大限度地降低了功耗。
答案 2 :(得分:0)
进行一些测试以确定有多少并发HTTPRequest正常工作。
我建议启动一项服务并拥有许多线程而不是多项服务。