Делегаты приложения не звонят, пока приложение находится в фоновом режиме

Я реализую приложение для iPhone. Я загружаю данные с сервера с помощью асинхронного запроса в приложении. Если я нажимаю кнопку «Домой», мой делегат приложения не вызывается напрямую. После завершения загрузки данных с сервера вызываются методы делегата приложения. Итак, как я могу получить немедленный вызов делегата в своем приложении.

Любая помощь может быть оценена.


person Rajesh    schedule 01.12.2011    source источник


Ответы (1)


Какие методы делегирования вы реализуете? Можете ли вы опубликовать здесь то, что вы пробовали (в коде)? Обратите внимание, что после перевода приложения в фоновый режим вы можете запускать только краткосрочные задачи для экономии заряда батареи.

Этот пример предоставлен Apple:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIApplication*    app = [UIApplication sharedApplication];

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

    // 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, preferably in chunks.

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

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

Руководство по программированию приложений для iOS: состояния приложений и многозадачность

person Craig Otis    schedule 01.12.2011