supersr--NSURLSessionConfiguration-下载进度
// ViewController.m
// 下载进度
#import "ViewController.h"
@interface ViewController () <NSURLSessionDownloadDelegate>
@property (nonatomic, strong) NSURLSession *session;
@property (nonatomic, strong) NSURLSessionDownloadTask *downloadTask;
@property (nonatomic, strong) NSData *data;
- (NSURLSession *)session{
if (_session == nil) {
//代理方法运行的队列
NSOperationQueue *queue = [NSOperationQueue mainQueue];
// //最大的并发线程数 ???????
//在NSURLSession中使用NSOperationQueue设置最大并发数,无效
// queue.maxConcurrentOperationCount = 1;
NSURLSessionConfiguration *conf = [NSURLSessionConfiguration defaultSessionConfiguration];
//创建自定义session 设置代理
//session 会话
_session = [NSURLSession sessionWithConfiguration:conf delegate:self delegateQueue:queue];
}
return _session;
}
//开始下载
- (IBAction)start:(id)sender {
[self download];
}
// [self.downloadTask cancel];
NSLog(@"zan ting");
//取消下载,并且存储当前下载的数据
[self.downloadTask cancelByProducingResumeData:^(NSData *resumeData) {
self.data = resumeData;
}];
//如果点击多次暂停 会出问题 无法继续(因为 点击多次暂停的话 resumeData 为空)
self.downloadTask = nil;
}
//继续下载
- (IBAction)resume:(id)sender {
if (self.data == nil) {
NSLog(@"没有要继续的数据");
return;
}
[[self.session downloadTaskWithResumeData:self.data] resume];
self.data = nil;
}
NSString *strUrl = @"http://dlsw.baidu.com/sw-search-sp/soft/9d/25765/sogou_mac_31.1421982306.dmg";
strUrl = [strUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:strUrl];
//使用代理的话,不能用此方法
// [[self.session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
// NSLog(@"---%@",[NSThread currentThread]);
// }] resume];
//执行代理方法
self.downloadTask = [self.session downloadTaskWithURL:url];
[self.downloadTask resume];
// [[self.session downloadTaskWithURL:url] resume];
}
//代理的方法
NSLog(@"over");
NSLog(@"==");
}
//进度
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{
NSLog(@"---%@",[NSThread currentThread]);
// [NSThread sleepForTimeInterval:0.1];
//bytesWritten 本次下载了多少
//totalBytesWritten 总共下载了多少
//totalBytesExpectedToWrite 文件的大小
float process = totalBytesWritten * 1.0 / totalBytesExpectedToWrite;
NSLog(@"%f", process);
self.processView.progress = process;
}
supersr--NSURLSessionConfiguration-下载进度的更多相关文章
- 使用NSURLSessionDownloadTask实现大文件下载-监听下载进度
- 5.1 涉及知识点(1)创建NSURLSession并设置代理,通过NSURLSessionDownloadTask并以代理的方式来完成大文件的下载 //1.创建NSURLSession,设置代理 ...
- iOS空心圆下载进度指示器控件
self.layer = [CAShapeLayer layer]; self.layer.frame = CGRectMake(, , , ); self.layer.position = self ...
- IOS下载查看PDF文件(有下载进度)
IOS(object-c) 下载查看 PDF 其实还是蛮容易操作的.在下载前,首先要把 IOS 可以保存文件的目录给过一遍: IOS 文件保存目录 IOS 可以自定义写入的文件目录,是很有限的,只能是 ...
- 使用AsyncTask实现文件下载并且在状态中显示下载进度
2013年10月24日 上班的第二天 昨天我是用afinal完成的则个功能,但是公司里并不希望使用第三方的代码,所以要求我在不使用第三方开源项目的情况下实现. 最先我是使用Thread开启一个子线程, ...
- iOS异步下载下载进度条显示
说到http异步下载,首先要知道其中的关键类. 关键类是NSURLConnection NSURLRequest NSMutableURLRequest 委托是 NSURLConnectionDo ...
- iOSQuartz2D-02-绘制炫酷的下载进度条
效果图 实现思路 要实现绘图,通常需要自定义一个UIView的子类,重写父类的- (void)drawRect:(CGRect)rect方法,在该方法中实现绘图操作 若想显示下载进度,只需要实例化自定 ...
- PHP持续保有长连接,利用flush持续更新浏览器UI,下载进度条实现
如何用PHP+JS实现上传进度条,大部分的人可能都实现过,但是下载呢?如何呢?原理也是差不多的,就是分次读写,每次读多少字节,但是这样的不好就是长连接,一般实现下载进度条常用的两种解决方案是:一种是需 ...
- OC - 9.使用Quartz2D绘制下载进度条
效果图 实现思路 要实现绘图,通常需要自定义一个UIView的子类,重写父类的- (void)drawRect:(CGRect)rect方法,在该方法中实现绘图操作 若想显示下载进度,只需要实例化自定 ...
- ios专题 - 异步下载加下载进度显示
[罗国强原创] 今天被刺激了,愤概地要写下这边博文. 说到http异步下载,首先要知道其中的关键类. 关键类是NSURLConnection NSURLRequest NSMutableURLReq ...
- 用 CALayer 定制下载进度条控件
// // RPProgressView.h // CALayer定制下载进度条控件 // // Created by RinpeChen on 16/1/2. // Copyright © 2016 ...
随机推荐
- isNaN() 确认是否是数字
isNaN(x): 当变量 x 不是数字,返回 true: 当变量 x 是其他值,(比如,1,2,3),返回false.
- PHP get_class_methods函数用法
get_class_methods — 返回由类的方法名组成的数组 说明 array get_class_methods ( mixed $class_name ) 返回由 class_name 指定 ...
- Redis的一些坑
转载请注明出处哈:http://carlosfu.iteye.com/blog/2254154 上上周和同事(龙哥)参加了360组织的互联网技术训练营第三期,美团网的DBA负责人侯军伟给大家介绍了美团 ...
- Android 实现简单音乐播放器(二)
在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...
- umeng
http://bbs.umeng.com/thread-5408-1-1.html 微博分享 http://dev.umeng.com/social/ios/operation#2_2 http:// ...
- 高性能滚动 scroll 及页面渲染优化
最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作. 本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的 ...
- SQL双重游标(双重循环)--笔记
declare )='', )='', )='' --创建游标 declare @cursor cursor --设定游标欲操作的数据集 set @cursor=cursor for select s ...
- iOS开发——高级篇——地图 MapKit
一.简介 1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如周边:找餐馆.找KTV.找电影院等等导航:根据用户设定的起点和终点,进行路线规划,并指引用户如何到达 在上述应用中,都用到了定位 ...
- 2016移动端web5分钟速成(适合新手)
http://www.w3cfuns.com/notes/20813/fecbb840a2574cf712a8625f88a7ab3a.html
- Opencv SkinOtsu皮肤检测
void SkinRGB(IplImage* rgb, IplImage* _dst) { assert(rgb->nChannels == && _dst->nChann ...