1

我喜欢在 backgroundSessionConfiguration 中使用 NSURLSession 的方法:

uploadTaskWithRequest:fromFile:

但是我需要在上传后运行一些代码来选择下一个文件。选择后,我想再次启动 NSURLSession 以使用 uploadTaskWithRequest:fromFile: 方法上传它

所以递归上传一堆文件

你知道这是否可能吗?

4

1 回答 1

1

简短的回答是肯定的,这是可能的。你有 30 秒的时间来做这件事。

  1. 无论您运行什么代码,您都必须确保在后台重新启动应用程序时它会运行。即处理内存中的所有内容被丢弃并重新初始化它们。这是因为当您的应用程序在后台运行时,如果用户正在运行其他内存密集型应用程序,您的应用程序将由于内存压力而被杀死。然而,内存压力的终止仍然会导致您的应用程序在 NSURLSession 任务完成后的某个时间点被唤醒。

  2. 我不会推荐它。根据我的经验,像这样一次一个地链接上传请求是非常无效的,因为每次上传都在等待应用程序被唤醒一次。唤醒应用程序的成本很高,而且根本不会经常或可靠地发生。这取决于用户的使用行为,而不是您上传的状态。

我的建议是将您的 NSURLSession 配置配置为串行(如果您希望每个主机一次处理一个任务,我认为如果它们连接到不同的主机,您实际上不能序列化任务。)然后提交所有上传任务立即让 nsnetworkd 负责安排它们并提交它们。以我的经验,这是更可靠和更快的数量级。

希望有帮助。

于 2014-04-18T16:45:00.633 回答