iOS - Как выполнить задачу, прежде чем приложение войдет в фоновый режим - PullRequest
0 голосов
/ 05 марта 2012

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

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");
    });
}

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

У вас есть идеи?

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

Ответы [ 2 ]

1 голос
/ 05 марта 2012

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

0 голосов
/ 05 марта 2012

Единственный способ - загрузить данные синхронно с

.
[NSData dataWithContentsOfURL:imageURL]

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

...