Как лучше всего создавать постоянные очереди задач в iOS-приложении? - PullRequest
9 голосов
/ 29 июля 2011

Я использую очередь отправки для управления серией фоновых задач (загрузка нескольких файлов по требованию пользователя и без ожидания в пользовательском интерфейсе), и до сих пор она работала отлично. Более того, мне нужно сохранить незавершенные задачи, например, если нет возможности доступа к сети, или приложение упало, или батарея телефона разрядилась, при следующем запуске приложения все задачи возобновятся автоматически.

Я планирую сделать так, чтобы каждый блок задач сохранял задачу в контексте основных данных и удалял ее после завершения задачи, а также мне нужно будет выполнить проверку при запуске приложения, чтобы выяснить, есть ли какая-либо задача для выполнения ,

Какова лучшая практика создания такого рода приложений? Есть ли примеры, учебники или библиотеки, которые я могу использовать повторно?

Ответы [ 2 ]

4 голосов
/ 29 июля 2011

Ваша техника должна работать. Разработайте класс, который управляет вашими фоновыми задачами, чтобы «вслепую» выполнять любые задачи, которые ему даны.

Отправляйте задачи в этот класс с ваших различных контроллеров представления. Метод отправки должен выглядеть как

-(void) submitTask:(MyTask*) task  {

  task.completionHandler = ^{ [self.runningTasks removeObject:task];}
  [self.taskQueue addOperation: task];      
}

Я предполагаю, что MyTask является подклассом NSOperation, а taskQueue является NSOperationQueue. RunningTasks - это просто NSMutableArray, который сериализуется на диск (либо в CoreData, либо в любом другом формате), когда вы получаете UIApplicationDidEnterBackgroundNotification.

Вы можете реализовать аналогичный дизайн и с GCD.

3 голосов
/ 12 января 2013

Посетите библиотеку Марко Армента FCOfflineQueue:

https://github.com/marcoarment/FCOfflineQueue

...