【问题标题】:single ProgressView for multiple file(s) download task多个文件下载任务的单个 ProgressView
【发布时间】:2014-12-12 14:22:38
【问题描述】:

使用:ASIHTTPRequest、AFNetworking、RestKit。

我有多个图像/文件要通过 异步 调用 Web 服务进行下载。

我在下载过程中显示 SVProgressHUD(Activity IndicatorNOT Bar)。

到目前为止,一切正常。

现在,我的客户希望我在视图上显示正在下载的文件的单个进度条,以便让用户了解大概需要的时间。

问题:如何获得异步下载文件的统一时间/大小。

我愿意使用任何用于此目的的 API。我希望我是有道理的,在这里。

困难时期。有什么提示吗?

【问题讨论】:

  • 你在使用 NSURLConnection 吗?
  • 我正在寻找解决方案的相同问题。让我知道您针对此问题采用了什么方法。
  • 我们在这里讨论 2000 多个文件。可能更多。

标签: ios objective-c asynchronous objective-c-blocks nsurlrequest


【解决方案1】:

看看NSProgress,它不是一个 UIKit 类,但它允许你创建多个 NSProgress 实例(每个活动一个),然后获得一个可以连接到你的 UI 的组合进度值。

这里有一篇很好的文章,并附有示例: http://oleb.net/blog/2014/03/nsprogress/

您基本上使用 KVO 读取进度值,然后更新您的 UI 元素,即进度条。

【讨论】:

  • 我会调查并告诉你进展如何......谢谢。
  • @Camsoft 不错的建议。你知道的任何工作教程,NSProgress 或任何 Github 项目?
【解决方案2】:

一种选择是通过“head”请求获取所有文件的长度,然后自己计算: 下载的数据量/总数据长度。

这篇文章将帮助您获得总内容长度:Objective-c Check file size from URL without downloading

其他选项 - 开始在单独的线程中下载每个文件并使用共享变量来获取合并时间。

希望这会有所帮助。

【讨论】:

  • 我没有收到“Head”请求。你能详细解释一下吗?你的意思是说有一个单独的网络服务只是为了获取总字节数?
  • 另外,获取每个文件的“head”不会花费太多时间吗?我们正在谈论超过 2000 个左右的文件。
  • 可能需要一段时间,但如果你下载很多文件,时间会比较短。
  • 您是否有“其他选项”的任何示例 - 您在回答中提到过,因为我对多线程不太熟悉。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多