【问题标题】:Tracking individual request progresses in ASINetworkQueue在 ASINetworkQueue 中跟踪单个请求的进度
【发布时间】:2011-05-12 05:59:54
【问题描述】:

当点击 tableViewCells 上的按钮时,我需要下载一些文件。

我正在考虑将它们添加到 ASINetworkQueue 以便可以进行下载。 但是,当我开始跟踪进度时,在我看来,他们是在说整个队列只能有一个进度。

这是真的吗,还是有办法单独跟踪每个请求的进度? 我需要一个自定义的 tableview 来显示每个文件的下载量。

另外,在一个不太相关的注释上,我可以设置

[request setShouldContinueWhenAppEntersBackground:YES];

对于网络队列内部的请求? 我需要支持后台下载,如果networkqueue不支持,我还不如现在放弃这个想法,寻找其他方式。

【问题讨论】:

    标签: iphone background download asihttprequest


    【解决方案1】:

    documentation 提到:

    每个 ASIHTTPRequest 都有两个委托 可用于跟踪进度 - downloadProgressDelegate(用于下载)和uploadProgressDelegate (用于上传)。

    您仍然可以在请求上使用这些委托,即使请求是队列的一部分。

    网络队列仅由来自请求本身的事件驱动(并且请求继续作为队列的一部分,即使它们在后台运行)。我相信如果您将请求标记为在后台继续,那么队列事件也会继续。

    【讨论】:

    • 谢谢!但是当我使用 downloadProgressDelegate 并将其分配给 UIProgressVIew 控件时,我只能得到一个百分比完成。我如何获得像 3mb/21mb Done 这样的信息?
    • downloadProgressDelegate 获取显示 3mb/21mb 所需的信息 - 您需要创建自定义视图以准确显示您想要的内容;如果您不确定如何尝试作为新问题提出。
    • 谢谢。经过一番摸索,我得到了它的工作。我需要的是 [request setDidRecieveDataSelector:....] 在此,我使用了 request.totalBytesRead 和 request.contentLength。我不得不将它们投射到花车上才能使分隔正常工作,但最终还是奏效了。 :)
    • @JosephH 我在使用 DidReceiveDataSelector 时遇到问题。当我使用它时它不会下载到文件中,尽管我可以使用“3248Kb / 4993Kb Done”等制作自定义字符串......有没有办法我可以使用 downloadProgessDelegate 做同样的事情,这样我的 setDownloadPath 不会受到影响? setDownloadProgressDelegate 只接受 1 个参数,那是我的 UIProgressView。不知道我怎么能从那里下载 Kbs。 :(
    • @mvishnu 将进度委托设置为您自己的类并实现 request:didReceiveBytes: 方法(并使其调用 UIProgressView setProgress)。或者子类化 UIProgress 视图并在你的子类中实现 request:didReceiveBytes:。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2014-06-15
    相关资源
    最近更新 更多