Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions MJDownload/MJDownloadManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ @interface MJDownloadInfo()
@property (strong, nonatomic) NSURLSessionDataTask *task;
/** 文件流 */
@property (strong, nonatomic) NSOutputStream *stream;

@property (assign, nonatomic,getter = isSupend) BOOL suspend; // 是否是暂停

@end

@implementation MJDownloadInfo
Expand Down Expand Up @@ -184,6 +187,7 @@ - (void)cancel
*/
- (void)resume
{
self.suspend = NO;
if (self.state == MJDownloadStateCompleted || self.state == MJDownloadStateResumed) return;

[self.task resume];
Expand All @@ -208,7 +212,8 @@ - (void)suspend
if (self.state == MJDownloadStateCompleted || self.state == MJDownloadStateSuspened) return;

if (self.state == MJDownloadStateResumed) { // 如果是正在下载
[self.task suspend];
[self.task cancel]; // 这里要调用取消, 而不是调用suspend, 因为一个链接可能会超时
self.suspend = YES;
self.state = MJDownloadStateSuspened;
} else { // 如果是等待下载
self.state = MJDownloadStateNone;
Expand Down Expand Up @@ -262,7 +267,18 @@ - (void)didCompleteWithError:(NSError *)error
if (self.state == MJDownloadStateCompleted || error) {
// 设置状态
self.state = error ? MJDownloadStateNone : MJDownloadStateCompleted;

if(error == nil){
self.state = MJDownloadStateCompleted;
}else if(self.isSupend){
self.state = MJDownloadStateSuspened;

}else{
self.state = MJDownloadStateNone;

}
}

}
@end
/****************** MJDownloadInfo End ******************/
Expand Down Expand Up @@ -484,6 +500,7 @@ - (void)resume:(NSString *)url

// 正在下载的
NSArray *downloadingDownloadInfoArray = [self.downloadInfoArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"state==%d", MJDownloadStateResumed]];
[info setupTask:self.session]; // 初始化下载任务
if (self.maxDownloadingCount && downloadingDownloadInfoArray.count == self.maxDownloadingCount) {
// 等待下载
[info willResume];
Expand Down Expand Up @@ -533,7 +550,6 @@ - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didComp
{
// 获得下载信息
MJDownloadInfo *info = [self downloadInfoForURL:task.taskDescription];

// 处理结束
[info didCompleteWithError:error];

Expand Down