NSURLSession前台下载/后台下载/断点下载的代理执行路径(二)
来源:互联网 发布:mac 怎么卸载jenkins 编辑:程序博客网 时间:2024/05/21 10:58
后台情况
六.NSURLSession前台下载开始--------->切换后台----(下载未结束)----->切换前台--------->下载结束。
此时的调用与完全在前台执行相同。
七.NSURLSession前台下载开始--------->切换后台----(下载已结束)----->切换前台。
1.在下载过程中,NSURLSessionDownloadDelegate的
URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite (int64_t)totalBytesExpectedToWrite
接口会多次调用,在此接口中可进行下载进度的记录或更新UI的下载进度条。
2.切换后台。
3.后台的所有下载任务结束,此时会调用Appdelegate的
- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)())completionHandler
此方法中的completionhandler的block需要被变量引用,以备在后续方法中执行。
4.执行NSURLSessionDownloadDelegate的方法
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTaskdidFinishDownloadingToURL:(NSURL *)location { NSLog(@"------这是NSURLSessionDownloadDelegate 的 didFinishDownloadingToURL:location"); NSLog(@"downloadTask:%lu didFinishDownloadingToURL:%@", (unsigned long)downloadTask.taskIdentifier, location); NSString *locationString = [location path]; NSString *finalLocation = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[NSString stringWithFormat:@"%lufile",(unsigned long)downloadTask.taskIdentifier]]; NSError *error; [[NSFileManager defaultManager] moveItemAtPath:locationString toPath:finalLocation error:&error]; // 用 NSFileManager 将文件复制到应用的存储中 // ... // 通知 UI 刷新}
此接口中的location参数记录下载的tmp文件的存储路径,在此接口中需将下载的tmp文件重新保存至最终的保存地址中。
5.调用NSURLSessionTaskDelegate的
URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
当下载成功时,error参数为nil。
6.当NSURLSessionTaskDelegate以及NSURLSessionDownloadDelegate的代理方法调用完成后调用NSURLSessionDelegate的方法
- (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session { NSLog(@"------这是NSURLSessionDelegate 的 URLSessionDidFinishEventsForBackgroundURLSession "); NSLog(@"Background URL session %@ finished events.\n", session); if (session.configuration.identifier) { // 调用在 -application:handleEventsForBackgroundURLSession: 中保存的 handler [self callCompletionHandlerForSession:session.configuration.identifier]; }}
在该方法中待所有载数据管理和UI刷新做完后,再调用3中引用的completionHandler()的block。
八.NSURLSession前台下载开始--------->切换后台----(下载未结束)--------->下载失败----->切换前台。
九.NSURLSession前台下载开始--------->切换后台----(下载未结束)--------->退出应用----->应用重新打开--------->重新恢复下载--------->下载结束。
此过程同四中的NSURLSession前台下载开始--------->应用退出--------->应用重新打开--------->重新恢复下载--------->下载结束。
十.NSURLSession前台下载开始--------->切换后台----(下载未结束)--------->下载失败--------->退出应用----->应用重新打开--------->重新恢复下载--------->下载结束。
十一.NSURLSession前台下载开始--------->切换后台----(下载已结束)--------->退出应用---->应用重新打开。
- NSURLSession前台下载/后台下载/断点下载的代理执行路径(二)
- NSURLSession前台下载/后台下载/断点下载的代理执行路径(一)
- iOS网络--『文件下载、断点下载』的实现(二):NSURLSession
- iOS使用NSURLSession进行下载(包括后台下载,断点下载)
- NSURLSession实现断点下载
- 【iOS】NSURLSession断点下载
- NSURLSession实现断点下载
- NSURLSession 断点下载
- NSURLSession的下载和断点继传以及后台下载功能
- NSURLSession实现下载(代理)
- NSURLSession实现下载(代理)
- NSURLSession NSURLConnection下载大文件 断点下载
- iOS后台下载、断点下载
- 断点后台下载
- NSURLSession代理实现一个下载
- 使用AFNetworking 2.0 断点下载 NSURLSession
- 网页下载模板前台后台
- iOS NSURLSession后台下载和断点续传
- u3d对象池
- springMVC -- 整合UEditor(富文本编辑器)
- Gulp returns error: EPERM: operation not permitted, chmod <directoryName>问题解决办法
- J2EE模式--拦截过滤器模式
- PHP读取csv文件的内容
- NSURLSession前台下载/后台下载/断点下载的代理执行路径(二)
- 'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件
- Trafodion ETL工具odb进行数据load方法及性能
- Qt Charts - 让数据可视化更简单
- Ubuntu14.04编译安装mysql5.5
- ios学习--基于Xcode8插件开发~一键检测处理头文件引用
- MYSQL性能优化的最佳20+条经验-来自酷壳陈皓
- 269----session保存数据库中
- LInux中安装gcc-c++时报错和原有gcc版本冲突