2011-07-29 21 views
8

Estoy usando la cola de envío para administrar una serie de tareas en segundo plano (descargar varios archivos a petición del usuario y sin esperar en la interfaz de usuario) y hasta ahora funcionó de maravilla. Además, tengo que continuar las tareas pendientes, por lo que, por ejemplo, si no hay capacidad de alcance de la red o la aplicación se bloqueó o la batería del teléfono se apagó, la próxima vez que se ejecute la aplicación, todas las tareas se reanudarán automáticamente.¿Cuál es la mejor práctica de crear cola de tareas persistentes en la aplicación iOS?

Estoy planeando que cada bloque de tareas guarde la tarea en un contexto de datos básicos, y la elimine una vez que la tarea haya finalizado, y también tendré que realizar una comprobación al inicio de la aplicación para ver si hay alguna tarea para hacer.

¿Cuál es la mejor práctica de crear este tipo de aplicación? ¿Hay alguna muestra, tutorial o biblioteca que pueda volver a usar?

Respuesta

4

Su técnica debería funcionar. Diseña la clase que gestiona tus tareas en segundo plano para ejecutar "ciegamente" cualquier tarea que se le haya asignado.

Envíe tareas a esta clase desde sus diferentes controladores de visualización. El método de envío debe ser similar

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

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

Estoy asumiendo que MyTask es una subclase de NSOperation y TaskQueue es un NSOperationQueue. The runningTasks es simplemente un NSMutableArray que se serializa en el disco (ya sea a CoreData o al formato que desee) cuando recibe una UIApplicationDidEnterBackgroundNotification.

También puede implementar un diseño similar con GCD.

Cuestiones relacionadas