首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLSessionDownloadTask cancelByProducingResumeData对暂停

NSURLSessionDownloadTask cancelByProducingResumeData对暂停
EN

Stack Overflow用户
提问于 2016-05-13 04:34:28
回答 2查看 936关注 0票数 3

我需要暂停下载任务,并继续它,即使在应用程序重新启动。但是我不确定我应该使用哪种方法,suspend还是cancelByProducingResumeData

使用cancelByProducingResumeData,我可以获得部分下载的数据,并使用它重新创建下载任务。但是,我必须手动管理数据,将其保存到文件中,将其读回,并重新创建该任务,并确保新任务不会失败。

使用suspend,我可以暂停并继续下载任务。但是,在重新启动应用程序之后,我能继续执行这个任务吗?我使用后台会话,以便在重新启动过程中保留任务。

cancelByProducingResumeData要求让它工作,这些要求也适用于suspend/resume吗?或者suspend/resume仅仅意味着“临时挂起一项任务”,就像文件上说的那样?

EN

回答 2

Stack Overflow用户

发布于 2016-05-18 22:02:22

你想得太多了。下载任务的“恢复数据”是,而不是,它是任务接收到的数据。这是一小块簿记数据--你通常会把它放入NSUserDefaults中的数组中。

尽管如此,要回答原来的问题,任务只在会话的上下文中有效。因此,对于前台会话,一旦应用程序退出,会话就不再存在,因此不再可能访问该会话中的任务。因此,在重新启动应用程序之后,不可能恢复挂起的任务,因为该任务不再存在(因为它的会话不再存在)。

对于后台会话,您几乎需要请基金会网络团队中的某个人来获得这个问题的答案,因为这取决于您在事后可以在多大程度上重新创建会话。然而,我的猜测是,它可能在那里也不起作用,如果是这样的话,您应该认为它不受支持。

票数 3
EN

Stack Overflow用户

发布于 2016-05-18 23:28:55

在对苹果开发人员表单进行了研究之后,我发现了

任务挂起很少被使用,如果是的话,它主要用于暂时禁用回调,作为某种类型的并发控制系统的一部分。这是因为挂起的任务仍然可以在连线上活动;挂起所做的一切就是阻止它在内部取得进展,发出回调等等。 OTOH,如果您正在实现长期暂停(例如,用户希望暂停下载),则最好调用-cancelByProducingResumeData:。

因此,suspend可能不会停止下载,我应该使用cancelByProducingResumeData:进行长期暂停。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37201332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档