【问题标题】:Speeding up app using many threads使用多线程加速应用程序
【发布时间】:2013-11-18 20:46:50
【问题描述】:

我目前正在开发一个 android 应用程序,该应用程序必须从不同的 url 获取超过 70 张图像。我目前正在使用 asynctask 来获取所有图像。如果我要创建多个线程并在线程之间分配获取 70 个图像的任务,例如一个线程上的 20 个和另一个线程上的 50 个,我的应用程序会更快地加载图像吗?

【问题讨论】:

  • 它们是每次相同的 70 张图像,还是每次都不同,或者有时相同,有时不同?
  • 谷歌 Volley 的人通过测试发现显然 4 个线程是好的。 (事实上​​,他们的库非常快)。
  • 它们可以相同也可以不同

标签: android multithreading image get


【解决方案1】:

我想您想同时加载所有 70 张图片?这可能取决于互联网连接的速度,但基本上我猜想完全加载所有图像的时间是相同的,无论是顺序加载还是并行加载。依次地,每张图片都可以使用完整的互联网带宽加载,而并行加载图片只能使用一小部分带宽,因此最终总时间将大致相同。

【讨论】:

    【解决方案2】:

    好吧,我可以想象拥有多个 http 连接,每个连接由不同的线程管理可能对性能有益。
    确定要使用的线程数(可能 > 2)的最佳方法是对您的代码段的整体下载时间(即从开始到加载所有图像之间)进行基准测试。
    对于异步下载多个图像,我还建议使用 picasso 库。

    【讨论】:

      【解决方案3】:

      它变得更快的机会很少,因为加载时间取决于连接时间。

      我认为正确的做法是考虑更好地设计您的应用程序,避免一次检索 70 张图像,因为我不了解您的应用程序,但您真的需要同时显示 70 张图像吗?最好仅在要显示图像时才加载图像。这有两个主要原因:

      1. 您的活动将更快显示
      2. 您的用户可能没有无限流量套餐,也可能未使用 wi-fi

      【讨论】:

        【解决方案4】:

        我目前正在使用 asynctask 来获取所有图像。我的应用程序会 如果我要创建许多线程并划分任务,则加载图像更快 在线程之间获得 70 个图像,例如一个线程上 20 个和 50 个 在另一个?

        如果您使用单个任务来下载所有 (70) 个图像,这不适合它。当然,如果您希望更快地下载图像,则应该在下载图像时使用单独的任务。(我假设顺序下载图像没有限制)如果您继续使用单个任务下载 70 张图像,它们将被下载一个一个,这将需要很长时间。

        使用库进行图像下载。加载远程图像是一项痛苦的工作。我建议您为此使用库。我目前正在使用ShutterBug。尝试一下。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-24
          • 1970-01-01
          相关资源
          最近更新 更多