Делегаты приложения не вызывают, пока приложение входит в фоновый режим - PullRequest
1 голос
/ 01 декабря 2011

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

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

1 Ответ

1 голос
/ 01 декабря 2011

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

Этот пример предоставлен 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: состояния приложений и многозадачность

...