【发布时间】:2011-09-27 05:39:08
【问题描述】:
我正在为 Android 编写一个应用程序,它允许用户浏览文件列表并下载它们。 对于每次下载,我创建了一个线程并使用 HttpURLConnection 实例下载文件(通过在 while 循环中读取连接)。
此方法适用于一次活动下载。但是当用户启动多个时,下载性能会急剧下降。大多数时候,这些并行下载会消耗所有带宽,用户无法浏览文件(使用另一个 HttpUrlConnection 加载文件列表)。
对优化下载系统有什么建议吗? 谢谢。
P.S.:Google Chrome 和 Firefox 等流行浏览器的做法似乎不错。有谁知道它们的工作原理吗?
【问题讨论】:
-
你可以尝试给下载线程一个较低的优先级。
-
请使用 AsyncTask 的 doInBackground 通过 HTTP 连接而不是使用线程来获取文件。我该死的肯定它会提高性能
-
为什么? AsyncTask 只使用一个线程池(最多 10 个线程)。就这样。创建自己的线程不会显着降低您的应用速度。