Ответ 1
Ну, по-видимому, этот вопрос был не очень умным, чтобы начать с:) Эта "проблема" происходит только в симуляторе. При отладке на самом устройстве он работает так, как ожидалось.
Никакого вреда. Спасибо всем, кто пытался помочь!:)
Я заметил что-то, что происходит в каждом приложении, которое я разрабатываю. Обычно это не проблема, но в этом конкретном приложении было бы здорово, если бы я мог "исправить" его, если бы это даже ошибка.
Шаги по повторному выпуску проблемы:
Можно ли избавиться от того, что этот всплеск всплывает на полсекунды на обратном пути? Это действительно проблема для этого конкретного приложения.
Ну, по-видимому, этот вопрос был не очень умным, чтобы начать с:) Эта "проблема" происходит только в симуляторе. При отладке на самом устройстве он работает так, как ожидалось.
Никакого вреда. Спасибо всем, кто пытался помочь!:)
Я знаю, что этот вопрос отмечен как "ответ", но реальность такова, что ответ был неправильным в моем случае, и я хочу поделиться.
Сначала я пришел к выводу, что наиболее точный ответ выше был от QueyJoh - "это то, что обрабатывается iOS... Короткий ответ: это из ваших рук".
Однако после экспериментов мне удалось найти проблему в качестве записей в файле info.plist, контролирующих строку состояния. В частности, у меня были записи для "UIStatusBarHidden" и "UIStatusBarStyle".
Удаление этих записей из моего файла plist немедленно остановило мое приложение от показа экрана Splash при переключении с моего приложения и обратно.
Проблема решена.
Мэтью
По моему опыту, это то, что обрабатывается iOS (я иду с опытом, потому что я не видел никакой документации об этом). Если ОС может восстанавливать состояние приложения хорошо и быстро, на экране будет отображаться снимок предыдущего состояния, пока это состояние будет восстановлено.
Однако, если что-то задержит процесс, например, приложение не будет в фоновом режиме должным образом (например, во время быстрого переключения задач), или если что-то еще предсказуемое задержит запуск, то оно вернется к заставке ( вместо снимка экрана), чтобы облегчить работу пользователя.
Короткий ответ: это из ваших рук.
Ваш код для отображения вашего заставки должен находиться в вашем appdelegate в методе didFinishLaunchingWithOptions. Если это так, то оно появляется только тогда, когда приложение действительно запускается, а не когда оно возвращается из фона.
Используйте что-то вроде этого (я знаю, что он использует старый код анимации, но я уверен, что вы можете обновить его до блоков, если вам нужно)...
splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)];
splashView.image = [UIImage imageNamed:@"Default.png"];
[myWindow addSubview:splashView];
[myWindow bringSubviewToFront:splashView];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)];
splashView.alpha = 0.0;
[UIView commitAnimations];
а затем создайте метод startupAnimationDone...
(void) startupAnimationDone: (NSString *) animationID закончен: (NSNumber *) законченный контекст: (void *) контекст {
[splashView removeFromSuperview];
[splashView release]; }
У меня тоже есть эта проблема, теперь я ее решил. Причина в том, что вы слишком много делали в applicationDidEnterBackground, старайтесь уменьшать.