【问题标题】:About NSURLSessionTask and "resume"关于 NSURLSessionTask 和“简历”
【发布时间】:2021-05-06 05:01:56
【问题描述】:

我想澄清一下“简历”的含义。它用于根据 Apple 的文档启动会话任务。

我的问题是,如果任务在第一次“恢复”完成其操作之前第二次“恢复”,第二次“恢复”是否只会要求任务从第一次调用继续工作,而不是从一开始就开始?

也就是说,如果任务已启动并因任何原因暂停,则第二个“恢复”调用将恢复任务一直在执行的操作。

其次,如果任务根本没有停止或暂停,第二次“恢复”调用将无效,任务将继续执行它应该执行的操作...

希望知道以上两个假设是否正确的人可以提供一些帮助。

【问题讨论】:

    标签: ios nsurl


    【解决方案1】:

    NSURLSessionTask 可以处于四种状态之一;

    • 活动
    • 暂停
    • 已取消
    • 已完成

    调用resume 仅在任务当前暂停时有效。

    任务以挂起状态启动,因此您必须先调用resume 才能启动它。

    对活动、已完成或已取消的任务调用 resume 无效。

    您可以通过调用suspend 来暂停任务。

    在挂起的任务上调用resume的效果取决于任务的类型;

    • NSURLSessionDownloadTask 可以从暂停的位置恢复。
    • 所有其他任务类型都重新启动。

    【讨论】:

    • 假设 ios 设备在会话下载过程中一半没电,并且设备连接到电源并重新启动。然后用户重启APP,同样的下载请求是从同样的代码发出的,没有任何参考第一次调用。 ios会不会直接继续下载(不从头开始),不用APP编码器添加代码检查第一次下载请求的状态?
    • 假设您的意思是设备实际上已关闭,那么不会。一旦特定任务从内存中删除,就无法恢复;因此,在设备重启并重启应用后,下载将从头开始。
    • 你是不是暗示如果设备没有关机,如果第二次调用“resume”,下载任务可以继续下载(不必从头开始),即使用户在第一次“恢复”后关闭了APP或将APP推入后台...
    • 如果他们强制应用程序,下载可能会被终止。如果他们已将应用移至后台并且您已指定背景 NSURLSession,则 iOS 会代表您的应用完成下载。
    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2018-07-20
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    相关资源
    最近更新 更多