2012-07-07 5 views
1

Я хочу загрузить некоторые файлы, которые следует продолжить, даже если приложение переходит в фоновый режим.Фоновая задача с NSOperation и NSOperationQueue iOS

В настоящее время я извлекаю файлы из БД и добавляю его в очередь через NSOperation, который затем запускает процедуру загрузки.

Все файлы должны быть загружены, даже если приложение переходит на задний план или на передний план. Ниже приведен код для одиночной задачи. Кто-нибудь может дать мне подсказку, как мы можем заставить его работать для загрузки многих файлов.

UIApplication* application = [UIApplication sharedApplication]; 
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
    // Clean up any unfinished task business by marking where you 
    // stopped or ending the task outright. 

    [application endBackgroundTask: bgTask]; 
    bgTask = UIBackgroundTaskInvalid; 
}]; 

ответ

0

Почему бы не попробовать это? .. Я еще не пробовал, я выложу обновление после попытки этого

UIApplication* application = [UIApplication sharedApplication]; 
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
    // Clean up any unfinished task business by marking where you 
    // stopped or ending the task outright. 

    // Bring up your NSOperation queue instance here and block this thread until it is complete 
    [queue waitUntilAllOperationsAreFinished]; 

    [application endBackgroundTask: bgTask]; 
    bgTask = UIBackgroundTaskInvalid; 
}]; 

также убедитесь, что у вас есть способ, чтобы отменить все эти длинные операции стоя в фоновом режиме

bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
     // Clean up any unfinished task business by marking where you. 
     // stopped or ending the task outright. 
     [queue cancelAllOperations]; 

     [application endBackgroundTask:endSessionTask]; 
     bgTask = UIBackgroundTaskInvalid; 
    }]; 
+1

Я не думаю, что этот ответ прав. Вызов 'waitUntilAllOperationsAreFinished' должен быть выполнен после' beginBackgroundTaskWithExpirationHandler', а не внутри блока истечения. См. Этот ответ: http://stackoverflow.com/questions/10319643/objective-c-proper-use-of-beginbackgroundtaskwithexpreathandler – Dima

0

Apple позволяет выполнять фоновое выполнение, если ваше приложение следует и удовлетворяет требуемому условию. plese refer here

Смежные вопросы