2012-03-05 4 views
0

Я разрабатываю приложение, и у меня возникает проблема, когда пользователи покидают приложение. Скажем, приложение загружает 3 изображения. Пользователь завершает работу приложения. Как я могу продолжить загрузку (потому что мы говорим о 2-м левом, а не 500!)? Я знаю, что-то вроде этого:iOS - Как закончить задачу перед тем, как приложение вводит фон

if ([_downloader isDownloading]) { 
    bgTask = [application beginBackgroundTaskWithExpirationHandler:^{ 
     // Clean up any unfinished task business by marking where you. 
     // stopped or ending the task outright. 
     [application endBackgroundTask:bgTask]; 
     bgTask = UIBackgroundTaskInvalid; 
    }]; 

    // Start the long-running task and return immediately. 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

     NSLog(@"dispatch_async debut"); 

     // Do the work associated with the task, preferably in chunks. 

     [application endBackgroundTask:bgTask]; 
     bgTask = UIBackgroundTaskInvalid; 

     NSLog(@"dispatch_async fin"); 
    }); 
} 

Проблема заключается в том, что моя задача уже обработали. Я не хочу снова запускать загрузку!

Есть ли у вас идеи?

Большое спасибо за ваши ответы.

ответ

1

Я бы посоветовал использовать ASIHTTPRequest, который имеет встроенную опцию для возобновления активных загрузок. http://allseeing-i.com/ASIHTTPRequest/

+0

Спасибо @stavash, но я не хочу использовать внешнюю библиотеку/класс для этого – Dabrut

0

Единственный способ для загрузки данных в синхронном образом с

[NSData dataWithContentsOfURL:imageURL] 

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

+0

Итак, нет способа разрешить выполнение задачи в данный момент? Я должен остановить его, а потом снова обработать. – Dabrut

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