|
@@ -22,7 +22,7 @@
|
|
|
- (instancetype)init {
|
|
|
|
|
|
if (self = [super init]) {
|
|
|
- _maxCount = 3;
|
|
|
+ _maxCount = 1;
|
|
|
[self registeNotification];
|
|
|
}
|
|
|
return self;
|
|
@@ -100,18 +100,21 @@
|
|
|
- (void)operateDownloadWithUrl:(NSString *)url session:(NSURLSession *)session handle:(DownloadHandleType)handle {
|
|
|
// 1、任务列表里取任务
|
|
|
mixDownloadOperation *operation = [self operationWithUrl:url];
|
|
|
+ HLog(@"operation.dataTask 1:%@",operation.dataTask);
|
|
|
|
|
|
// 2、本地plist文件里提取的任务
|
|
|
if (!operation) {
|
|
|
NSDictionary *dict = [mixDownloadCacheManager queryFileInfoWithUrl:url];
|
|
|
operation = [mixDownloadOperation mj_objectWithKeyValues:dict];
|
|
|
}
|
|
|
-
|
|
|
+ HLog(@"operation.dataTask 2:%@",operation.dataTask);
|
|
|
+
|
|
|
// 3、本地plist文件里提取的任务不存在dataTask
|
|
|
if (!operation.dataTask && operation.currentSize != operation.totalSize) {
|
|
|
operation.dataTask = [self.session mix_downloadDataTaskWithURLString:operation.url startSize:operation.currentSize];
|
|
|
[self.operations addObject:operation];
|
|
|
}
|
|
|
+ HLog(@"operation.dataTask 3:%@",operation.dataTask);
|
|
|
|
|
|
if (operation) {
|
|
|
|
|
@@ -125,7 +128,7 @@
|
|
|
|
|
|
case NSURLSessionTaskStateSuspended:
|
|
|
HLog(@"NSURLSessionTaskStateSuspended");
|
|
|
- operation.dataTask = [self.session mix_downloadDataTaskWithURLString:operation.url startSize:operation.currentSize];
|
|
|
+ //operation.dataTask = [self.session mix_downloadDataTaskWithURLString:operation.url startSize:operation.currentSize];
|
|
|
break;
|
|
|
|
|
|
case NSURLSessionTaskStateCanceling:
|
|
@@ -148,12 +151,17 @@
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ HLog(@"operation.dataTask resume:%@",operation.dataTask);
|
|
|
[operation.dataTask resume]; // 开始
|
|
|
[self operationStartWithOperation:operation];
|
|
|
break;
|
|
|
case DownloadHandleTypeSuspend:
|
|
|
- [operation.dataTask suspend]; // 暂停
|
|
|
+ HLog(@"operation.dataTask suspend:%@",operation.dataTask);
|
|
|
+ //[operation.dataTask suspend]; // 暂停
|
|
|
+ [operation.dataTask cancel]; // 暂停
|
|
|
[self operationSuspendWithOperation:operation];
|
|
|
+ //检测是否有等待下载的任务 有就开启下一个
|
|
|
+ [self taskExeEnd:nil];
|
|
|
break;
|
|
|
case DownloadHandleTypeCancel:
|
|
|
if (operation.dataTask) { // 任务列表删除任务
|
|
@@ -176,7 +184,8 @@
|
|
|
if (!operation.dataTask) { // 给plist里的任务添加dataTask 添加到operations
|
|
|
operation.dataTask = [self.session mix_downloadDataTaskWithURLString:operation.url startSize:operation.currentSize];
|
|
|
}
|
|
|
- [operation.dataTask suspend];
|
|
|
+ //[operation.dataTask suspend];
|
|
|
+ [operation.dataTask cancel];
|
|
|
[self operationSuspendWithOperation:operation];
|
|
|
}else {
|
|
|
HLog(@"已完成的任务");
|
|
@@ -191,12 +200,12 @@
|
|
|
[self.operations enumerateObjectsUsingBlock:^(mixDownloadOperation * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
|
|
|
|
mixDownloadOperation *operation = (mixDownloadOperation *)obj;
|
|
|
- if (!operation.dataTask) { // 给plist里的任务添加dataTask 添加到operations
|
|
|
+ //if (!operation.dataTask) { // 给plist里的任务添加dataTask 添加到operations
|
|
|
operation.dataTask = [self.session mix_downloadDataTaskWithURLString:operation.url startSize:operation.currentSize];
|
|
|
- }
|
|
|
+ //}
|
|
|
|
|
|
if ([self getOperationDoing].count < self.maxCount) { // 下载中任务数少于最大任务限制
|
|
|
-
|
|
|
+ HLog(@"getOperationDoing %@",operation.fileName);
|
|
|
switch (operation.dataTask.state) {
|
|
|
case NSURLSessionTaskStateRunning:
|
|
|
HLog(@"NSURLSessionTaskStateRunning");
|