urlsession 与后台下载
来源:互联网 发布:linux shell 打开目录 编辑:程序博客网 时间:2024/06/06 16:01
文件下载研究了几天
有两个问题始终绕不过去
什么时候是ui中的等待中?
什么时候是ui中的下载中?
后台下载怎么处理
苹果所暴露出来的代理
只有下载进度
下载完成数据
相关的代理
typedef NS_OPTIONS(NSUInteger, WHCDownloadState) { WHCNone = 1 << 0, WHCDownloading = 1 << 1, WHCDownloadCompleted = 1 << 2, WHCDownloadCanceled = 1 << 3, WHCDownloadWaitting = 1 << 4};
什么意思呢 这里的loading waiting 状态 都是不会存在的
只有none completed cancel 三种状态
分别对应
什么操作也没用
下载完成
下载到一半没有继续下了
这三种状态 ,至于本地什么状态也不存
当重新从缓存数据库中读取的时候
根据本地模型的
当前下载的大小 和需要下载的大小比对
当两个大小相同 ,代表下载完成
当小于需要下载的大小,代表任务取消了。对应任务暂停
剩下的就是什么操作也没有了
_downloadState = _totalLenght != 0 ? (self.currentDownloadLenght == self.totalLenght ? WHCDownloadCompleted : WHCDownloadCanceled) : WHCNone;
其余的东西呢
应该全部去ui里面处理
如果是cell 就去cell 里面处理状态
首先设置初始状态
只要不是完成状态 或者取消状态
都设置成为等待状态
再判断一下当前队列里面有没有取消状态的
也设置成为等待状态
接收到进度条反馈代理的时候
改为loading状态
接收到完成代理
判断是否成功
成功改为complete状态
失败改为cancel状态
接收到error代理
就把任务变为none状态
这些状态都是ui的
这样做出来就能保证UI上没有问题了。
也不需要维护什么等待队列和进行队列这些东西了。、、
这个和我很久之前的录音上传的思路是一样的
突然强退的任务是不存在上传中这样的状态的
因此只有默认的上传失败 和上传成功两种状态在本地
而后台下载更甚 什么状态我都不存,存了我也不判断
而是通过读取了多少数据来判断状态到哪里了。
这才是最简单的结题思路呀。
阅读全文
0 0
- urlsession 与后台下载
- URLSession 后台多任务下载
- URLSession 下载以及注意点
- URLSession数据协议下载图片
- URLSession
- URLSession
- iOS --URLSession请求方法,以及文件下载
- Networking with URLSession二 上传&下载
- swift 网络----利用URLSession的Data Task下载单张图片(包含图片的增量下载)
- URLConnection & URLSession
- URLSession 介绍
- URLSession 生命周期
- 使用URLSession
- URLSession证书
- URLConnection & URLSession
- Networking with URLSession一 URLSession
- swift 网络----利用URLSession的Block模式下载多张图片
- swift 网络----利用URLSession的Download Task模式下载多张图片
- Intellij IDEA的Hibernate简单应用
- 跟上Java8
- Kerberos协议
- Combinations问题及解法
- CodeChef
- urlsession 与后台下载
- 调用.so 文件时报错has text relocations
- 计算理论入门 1.1 命题逻辑
- Lintcode 删除排序数组中的重复数字
- active_job
- Oracle 的初级姿势——忘记sid的尴尬
- 最实用的40G/100G网络升级解决方案
- androd添加或删除文件后电脑端不能实时更新问题
- LOJ 「SDOI2017」新生舞会(二分 + 分数规划+ 费用流)