我正在编写一个Android应用程序,它允许用户浏览文件列表并下载它们。 对于每次下载,我创建了一个线程,然后使用HttpURLConnection实例下载文件(通过在while循环中读取连接)。
此方法适用于一个活动下载。但是当用户启动多个时,下载性能会急剧下降。大多数情况下,这些并行下载消耗了所有带宽,用户无法浏览文件(使用另一个HttpUrlConnection加载文件列表)。
有关改进下载系统的任何建议吗? 感谢。
P.S。:Google Chrome和Firefox等流行浏览器的方法看起来不错。谁知道它们是如何工作的?
答案 0 :(得分:7)
唉,我不知道如何限制某些连接。但是,实际的方法是实现下载队列以控制同时下载的数量。在您的情况下,您可能希望一次只下载1件事。这可以通过几种不同的方式实现。
这是使用Handlers和Looper执行此操作的方法:http://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/
编辑1: 看看老鼠的评论。一次下载最多2个线程可能更聪明。
答案 1 :(得分:4)
您可能想要查看android SDK中的DownloadManager
类。但它仅在上面或相同的api级别2.3可用。
http://developer.android.com/reference/android/app/DownloadManager.html
您可能希望看到的一些教程..
http://jaxenter.com/downloading-files-in-android.1-35572.html
http://www.vogella.de/blog/2011/06/14/android-downloadmanager-example/