Как реализовать выполнение задачи

Завершение задачи — приложения могут запрашивать у системы дополнительное время для выполнения данной задачи.

Я использую этот метод для завершения задачи,

- (void)applicationDidEnterBackground:(UIApplication *)application 
{
    UIApplication  *app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^
    { 
         NSLog(@"This is Testing");

        [app endBackgroundTask:bgTask]; 

        bgTask=UIBackgroundTaskInvalid;
    }];
}

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

С уважением,

Арункумар.П


person arunkumar.p    schedule 16.12.2010    source источник


Ответы (2)


Вы настраиваете обработчик истечения срока действия, но на самом деле вы ничего не делаете в фоновом режиме. Похоже, что приведенный выше код скопирован из Выполнение кода в фоновом режиме руководства по программированию приложений для iOS. Следующий фрагмент кода в этом примере:

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

    // Do the work associated with the task.

    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
});

Обработчик истечения срока действия не будет вызываться до тех пор, пока не будет достигнуто ограничение по времени (10 минут, когда я последний раз проверял); вы выполняете работу в задаче, которую вы отправляете асинхронно, а не в обработчике истечения срока действия.

person David Gelhar    schedule 16.12.2010

Это решило мою проблему: Простые фоновые задачи в IOS 4.

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

Надеюсь, это решит и вашу!

person Artur Sampaio    schedule 28.04.2011
comment
Ссылка мертва. Вот почему вы должны обобщить проблему. Пожалуйста, отредактируйте ответ, чтобы мы могли понять суть решения. Это, безусловно, сделает этот ответ более полезным. - person Tommie C.; 11.09.2015