Запретить отображение всплывающего экрана после возвращения с фона


Я заметил что-то, что происходит в каждом приложении, которое я разрабатываю. Обычно это не проблема, но в этом конкретном приложении было бы здорово, если бы я мог "исправить" его, если бы это даже ошибка.

Шаги по повторному выпуску проблемы:

  • Начните приложение, экран заставки появится прибл. 3 секунды и начало приложения.
  • Нажмите кнопку "домой", приложение перейдет в фоновый режим.
  • Верните приложение из фона (дважды щелкнув на главном экране и выбрав его), показывает всплеск на полсекунды или около того, а затем приложение возвращается.

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

Ответ 1

Ну, по-видимому, этот вопрос был не очень умным, чтобы начать с:) Эта "проблема" происходит только в симуляторе. При отладке на самом устройстве он работает так, как ожидалось.

Никакого вреда. Спасибо всем, кто пытался помочь!:)

Ответ 2

Я знаю, что этот вопрос отмечен как "ответ", но реальность такова, что ответ был неправильным в моем случае, и я хочу поделиться.

Сначала я пришел к выводу, что наиболее точный ответ выше был от QueyJoh - "это то, что обрабатывается iOS... Короткий ответ: это из ваших рук".

Однако после экспериментов мне удалось найти проблему в качестве записей в файле info.plist, контролирующих строку состояния. В частности, у меня были записи для "UIStatusBarHidden" и "UIStatusBarStyle".

Удаление этих записей из моего файла plist немедленно остановило мое приложение от показа экрана Splash при переключении с моего приложения и обратно.

Проблема решена.

Мэтью

Ответ 3

По моему опыту, это то, что обрабатывается iOS (я иду с опытом, потому что я не видел никакой документации об этом). Если ОС может восстанавливать состояние приложения хорошо и быстро, на экране будет отображаться снимок предыдущего состояния, пока это состояние будет восстановлено.

Однако, если что-то задержит процесс, например, приложение не будет в фоновом режиме должным образом (например, во время быстрого переключения задач), или если что-то еще предсказуемое задержит запуск, то оно вернется к заставке ( вместо снимка экрана), чтобы облегчить работу пользователя.

Короткий ответ: это из ваших рук.

Ответ 4

Ваш код для отображения вашего заставки должен находиться в вашем 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]; }

Ответ 5

У меня тоже есть эта проблема, теперь я ее решил. Причина в том, что вы слишком много делали в applicationDidEnterBackground, старайтесь уменьшать.