2014-10-30 1 views
1

NSOperationQueue 및 AFNetworking을 사용하여 프로젝트에 대한 다중 다운로드 기능을 구현하고 있습니다. 코어 데이터를 사용하여 다운로드 한 정보를 유지하지만 그 부분은 정상입니다. 내 문제는 실제로 다운로드 작업을 만들 때입니다. 그래서 여기 내가 어떻게 그랬는가 :iOS에서 NSOperationQueue 및 AFNetworking을 사용하여 멀티 다운로드 기능 구현

// create a NSOperationQueue 
NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
queue.name = @"DownloadQueue"; 
queue.maxConcurrentOperationCount = 1; 

// create an operation (AFDownloadRequestOperation is a subclass of AFHTTPRequestOperation) 
AFDownloadRequestOperation *operation = // some initializations 

// add the operation to the queue 
[queue addOperation:operation]; 

// later some more operations are created and added to the queue 

그런 다음 내가 큐에 3 가지 작업을 추가했다고 가정 해 봅시다. I 큐 그렇게 만 1 개 동작 (1)에 maxConcurrentOperationCount을 설정하기 때문에 실행되고, 다른 2 기다리는 :

operation 1: running 
operation 2: waiting 
operation 3: waiting 

는 그때 실행중인 작업을 일시 중지 (AFURLConnectionOperation 방법이다) pause를 사용 , 나는 실행 시작이 대기 작업 중 하나를 볼 것으로 예상하지만, 2 개 대기 작업이 대기 남아 발생하지 않습니다 : 다음, 나는 아직도이 완료 될 때까지 작업 1을 재개하고 기다릴 필요가 작동

operation 1: paused 
operation 2: waiting 
operation 3: waiting 

2 또는 3이 실행을 시작합니다.

내 질문은 위에서 설명한 것처럼 실행중인 작업을 일시 중지 한 후에 실행중인 큐에서 다른 작업을 수행하는 방법입니다. 당신은 멀티 다운로드를 구현하는 더 나은 방법을 설명 할 수있는 경우

또한, 나는 그것이 대단히 감사하겠습니다 (특히 다운로드 작업, 일시 정지/다시 시작 다운로드 작업의 최대 수를 관리하기 위해 관련)

답변

0

솔루션 :

작업을 일시 중지하려면 cancel을 사용하기 만하면됩니다. 작업에서 취소 플래그가 "예"인 경우 상황을 처리해야 실제로 작업을 종료 할 수 있습니다. 그런 다음 예상대로 대기열 동작의 모든 작업 (하나의 작업 취소 후 다른 대기 대기 실행 취소)

그리고 다운로드를 다시 시작하려면 웹에서 동일한 로컬로 내용을 가져 오는 새로운 작업을 만들기 만하면됩니다 파일 경로. (AFDownloadRequestOperation의 도움으로, 다운로드가 정상적으로 작동 함)

구현에 대한 정보가 필요하면 내 멀티 다운로드 시스템이 잘 작동합니다.

관련 문제