Сбой при возобновлении приложения в течение 11 секунд после выхода (0) - PullRequest
0 голосов
/ 09 августа 2011

У меня есть приложение, которое импортирует данные при запуске с использованием Core Data.В этой части приложения я отключил возобновление (многозадачность), вызывая exit (0) в applicationDidEnterBackground, когда установлен флаг.Например:

-(void)applicationDidEnterBackground:(UIApplication *)application {

    if (allowResuming==NO){
        NSLog(@"Terminating...");
        exit(0);
    }
}

Если затем я попытаюсь «возобновить» приложение (нажав на его значок) в течение 11 секунд после нажатия кнопки «Домой» (и, следовательно, выхода из (0), вызванного),приложение вылетает.Этого не происходит при запуске через отладчик, но журналы сбоев показывают, что похоже, что приложение пытается возобновить импорт данных с того места, где оно было остановлено, что, конечно, не то, что я хочу.

Попытка «возобновить» приложение снова сразу после этого сбоя (т. Е. В течение секунды) будет успешной.

Если я попытаюсь «возобновить» приложение через 11 секунд, это нормально.

Я был бы очень признателен, если у кого-то есть какие-либо идеи и / или можете указать мне правильное направление здесь.

Ответы [ 2 ]

6 голосов
/ 09 августа 2011

Я не думаю, что вы должны делать exit(0).Чтобы отключить многозадачность, установите ключ UIApplicationExitsOnSuspend key в Info.plist на YES.Подробнее см. В разделе Отказ от фонового выполнения в http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/CoreApplication/CoreApplication.html#//apple_ref/doc/uid/TP40007072-CH3-SW1.

Чтобы отменить частичную работу, выполненную, когда приложение покидает передний план, добавьте прослушиватель для UIApplicationWillResignActiveNotification or UIApplicationDidEnterBackgroundNotification.В методе обработчика вы можете сделать что-то вроде:

1010

HTH

1013 * Akshay
0 голосов
/ 09 августа 2011

Вы не должны использовать exit(0), как сказал Акшай.В дополнение к этому Apple, вероятно, отклонит ваше приложение, потому что приложения, которые состоят из кода, который прерывает приложение, как это, не будут одобрены.

...