我有一个支持将内容下载到本地磁盘的应用程序。 用户可以选择他们想要保存的项目。下载完成后,我将解压下载的文件并加密,然后保存到本地。我用NSURLSession与backgroundConfiguration来支持后台下载。我希望用户尽快访问下载的内容,因此我实现了自己的队列来处理下载项目。我希望下载机制可以在前台和后台都能工作。这里有一些机制及其结果ios URLSession后台下载FIFO机制
- 方法1:
首先创建每个下载任务,以及排队对象
downloadObj.downloadTask = [session downloadTaskWithRequest:request];
downloadObj.taskIdentifier = downloadObj.downloadTask.taskIdentifier;
[Queue enqueue:downloadObj];
过程中头部对象在队列
obj = [Queue objectAtIndex:0];
[obj.downloadTask resume];
手柄下一个对象在URLSession委托功能
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)downloadURL {
finishObj = [Queue findObjFromIdentifier:downloadTask.taskIdentifier];
nextObj = [Queue findNextObj:finishObj];
[nextObj.downloadTask resume];
[Queue removeObject:finishObj];
}
这种方法可以正常工作,当应用程序总是在前台。当应用程序进入后台时,所有创建的downloadTasks似乎会自动恢复。 所以他们会同时分享带宽。 它不遵循先进先出 ....
- 方法2:
创建URLSession委托功能下载任务,并直接恢复
这种方法仅下载当应用已经进入后台时运行的下载任务。
任何人都可以给我讲述了背景与先进先出产权一些建议?
我们有同样的问题。你有没有找到解决方案? –