假设我有一个正在运行的NSURLSessionUploadTask
。如果应用程序在该时间段内被杀死或崩溃,那么待处理请求会发生什么?任务是否仍然完成或是否也已终止?
这是来自记忆,所以带上一粒盐。 IIRC,它取决于任务类型,任务在其进度中的距离以及您是否提供了正文数据对象或正文流。
如果您使用的是非后台会话,则会取消该请求。
如果您正在使用后台会话:
如果上传完成,则在iOS中,操作系统会在后台重新启动您的应用以处理接收的数据;在OS X中,在用户重新启动应用程序之前不会发生任何事情,此时操作系统会提供等待数据。
如果您正在使用上传任务,则操作系统会在重新启动后将数据传送到您的应用,就像数据任务一样。然后,在iOS(仅)上,它告诉您它已经发送了所有待处理事件,此时您的应用必须调用操作系统在您的应用首次重新启动时给您的回调,告诉操作系统可以安全地杀死你的背景应用程序。
请注意,如果您的应用在从上传任务IIRC收到响应数据时崩溃,您的应用将无法重新启动。如果上传操作的实际结果对于您的应用程序至关重要,请使用下载任务进行上载,并通过提供的NSURLRequest对象提供正文数据对象。
如果系统在暂停时终止应用程序,系统会在后台重新启动应用程序。
它位于“重新启动会话,如果应用程序被终止”部分。它解释了发生了什么以及如何在应用程序启动时重新创建会话,以便正确处理后台进程。