iOS12 中的后台下载与上传
严格意义上来说,iOS并不能像Android一样,真的在后台开启一个下载Service,一直下载。但是它可以进行在系统允许范围内的后台上传和下载。
当使用
NSURLSessionConfiguration* sessionConfig = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:identifier];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:self.operationQueue];
创建一个Session后,由此Session创建出的NSURLSessionDownloadTask 和 NSURLSessionUploadTask 都会被交给系统的Background Transfer Services负责上传下载。 这种方法创建的task,不支持block形式的创建方法,必须使用比较原始的delegate回调方式。而且目前NSURLSessionDataTask对background模式的支持不好,切入后台后, 没有任何系统回调函数, 过一段时间再把程序切入前台直接报错。至于原因,有如下帖子说明:
https://stackoverflow.com/questions/39639268/ios-background-task-using-nsurlsessiondatatask
其中的主要意思是,NSURLSessionDataTask是把数据保存在内存中的,而Background Transfer Services无法跨进程读取内存数据。但是实际上,官方文档并没有说明DataTask不支持后台模式,很可能是目前的iOS版本里存在bug。
官方推荐的使用方法是在一个Session中,直接将需要处理的任务全部开启,程序进入后台,这些任务全部下载完成后,系统会通知程序。这种模式很适合下载的Url数量很少的情况,比如只需要下载几个url中的数据。但是如果需要下载几十个或是上百个url的资源,我们就不能一下子发起那么多的请求,服务器很可能无法及时响应,导致请求超时出错。那么想要达到后台下载的效果,就需要把众多请求分组放入多个Session,一个Session中的所有下载完成后,系统回产生回调,我们在系统回调中再次开启新的Session,继续下载。
iOS12 中的后台下载与上传的更多相关文章
- [转载]ASP.NET Core文件上传与下载(多种上传方式)
ASP.NET Core文件上传与下载(多种上传方式) 前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在 ...
- iOS开发——网络篇——NSURLSession,下载、上传代理方法,利用NSURLSession断点下载,AFN基本使用,网络检测,NSURLConnection补充
一.NSURLConnection补充 前面提到的NSURLConnection有些知识点需要补充 NSURLConnectionDataDelegate的代理方法有一下几个 - (void)conn ...
- 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件
[源码下载] 重新想象 Windows 8.1 Store Apps (89) - 通信的新特性: 下载数据, 上传数据, 上传文件 作者:webabcd 介绍重新想象 Windows 8.1 Sto ...
- ios开发之网络数据的下载与上传
要实现网络数据的下载与上传,主要有三种方式 > NSURLConnection 针对少量数据,使用“GET”或“POST”方法从服务器获取数据,使用“POST”方法向服务器传输数据; > ...
- tftp--实现服务器与客户端的下载与上传【转】
转自:https://blog.csdn.net/xiaopangzi313/article/details/9122975 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...
- Android开发 retrofit下载与上传
前言 此博客只讲解retrofit下载与上传的使用,其实与其说是retrofit的下载与上传还不如说,依然是Okhttp的下载与上传.如果你需要了解retrofit入门请查看这篇博客(此博客不在详细讲 ...
- ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案
摘要: ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案 在struts2应用中使用ueditor富文本编辑器上传图片或者附件时,即使配置 ...
- 【javascript】html5中使用canvas编写头像上传截取功能
[javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...
- iOS开发——网络Swift篇&NSURLSession加载数据、下载、上传文件
NSURLSession加载数据.下载.上传文件 NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的 ...
随机推荐
- 第三篇:Python基本数据类型
在了解基本数据类型的时候,我们需要了解基本数据类型有哪些?数字int.布尔值bool.字符串str.列表list.元组tuple.字典dict等,其中包括他们的基本用法和其常用的方法,这里会一一列举出 ...
- python 中 ModuleNotFoundError: No module named 'Crypto' 错误处理
今天在微信小程序服务端集成了微信的登录解密模块 WXBizDataCrypt,集成后运行程序时出现了下面的错误 (.venv) [1lin24@1lin24]# python manager_dev. ...
- C++——重载原理分析
C不支持函数重载,C++支持 代码演示 main.c #include<stdio.h> void Max(int a, int b) { printf("%d ", ...
- Python 写入训练日志文件并控制台输出
1. 背景 在深度学习的任务中,通常需要比较长时间的训练,因此我们会选择离开电脑.笔者在跟踪模型表现, 观察模型accuracy 以及 loss 的时候,比较传统的方法是在控制台print输出或者直接 ...
- 最近都会来学一点Python
https://www.cnblogs.com/hellosecretgarden/p/9206648.html 打开电脑,发现Python都是之前的代码,将近一年之前的时间. 最近都会重新掌握起来, ...
- es其他常用功能
es6除了模块化,class,promise,还有一些其他的常用功能. 1.let/const let是定义一个变量,但是这个变量可以重新赋值,const是定义一个常量,这个常量不能重新赋值 let ...
- web server
嵌入式的:boa thttpd wn 网站的: iis apache tomcat ngnix python 的 ruby的 自定的 windows w3mfc c#自定义的1对1 webser ...
- python_面向对象——编程步骤
校园管理系统: 设计一个学校机构管理系统,有总部.分校.有学院.老师.员工,实现具体如下需求: 1.有多个课程,课程要有定价 2.有多个班级,班级跟课程有关联 3.有多个学生,学生报名班级,交这个班级 ...
- 常见的HTML5语义化标签
<title>:页面主体内容.<hn>:h1~h6,分级标题,<h1> 与 <title> 协调有利于搜索引擎优化.<ul>:无序列表. ...
- redis-4.0.14 cluster 配置实战
1.操作系统配置 切换到root用户修改配置sysctl.conf vim /etc/sysctl.conf # 添加配置: vm.max_map_count= vm.overcommit_memor ...