【问题标题】:Downloading multiple files simultaneously in Android applications在 Android 应用程序中同时下载多个文件
【发布时间】:2011-09-27 05:39:08
【问题描述】:

我正在为 Android 编写一个应用程序,它允许用户浏览文件列表并下载它们。 对于每次下载,我创建了一个线程并使用 HttpURLConnection 实例下载文件(通过在 while 循环中读取连接)。

此方法适用于一次活动下载。但是当用户启动多个时,下载性能会急剧下降。大多数时候,这些并行下载会消耗所有带宽,用户无法浏览文件(使用另一个 HttpUrlConnection 加载文件列表)。

对优化下载系统有什么建议吗? 谢谢。

P.S.:Google Chrome 和 Firefox 等流行浏览器的做法似乎不错。有谁知道它们的工作原理吗?

【问题讨论】:

  • 你可以尝试给下载线程一个较低的优先级。
  • 请使用 AsyncTask 的 doInBackground 通过 HTTP 连接而不是使用线程来获取文件。我该死的肯定它会提高性能
  • 为什么? AsyncTask 只使用一个线程池(最多 10 个线程)。就这样。创建自己的线程不会显着降低您的应用速度。

标签: android download


【解决方案1】:

唉,我不知道限制某些连接的方法。然而,一个实用的方法是实现一个下载队列来控制同时下载的数量。在您的情况下,您可能希望一次只下载一件事。这可以通过几种不同的方式实现。

这是一种使用 Handlers 和 Looper 的方法:http://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/

编辑 1: 见老鼠的评论。一次最多下载 2 个线程可能更聪明。

【讨论】:

  • 我不建议一次只下载一个流。如果一个流无法访问、下载速度慢或有其他问题,则可能会出现问题。然后所有下载都必须等待这个完成或出错。
【解决方案2】:

您可能想查看 android SDK 中的 DownloadManager 类。但它仅在 api 级别 2.3 以上或等于 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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2017-12-16
    相关资源
    最近更新 更多