Как мне добиться ожидаемого поведения?
Текущее поведение
Завершение работы приложения из приостановленного состояния вызывает кратковременную вспышку последнего снимка приложения, снятого ОС.
Порядок отображения вещей после запуска после прекращения приостановленного состояния:
- Изображение раскадровки экрана запуска
- Снимок приложения последнего видимого экрана - такой же, как вкнопка home инициировала многозадачное меню
- контроллер корневого просмотра с его начальным видом
ожидаемое поведение
приложение, не участвующее в восстановлении состояния,когда он заканчивается, должен запускаться с образом запуска по умолчанию.Я бы хотел, чтобы это произошло.
Порядок рендеринга вещей после запуска после прекращения приостановленного состояния:
- Образ экрана раскадровки запуска
- Контроллер корневого представления с егоначальный вид
Копируется
- Запуск приложения
- Нажатие кнопки «Домой» - перемещение приложения в фоновый режим
- Двойное нажатие кнопки «Домой» - открытие многозадачного меню
- Проведение приложения вверх - чтобы закрыть его
- Открытие его снова
Мои настройки
Мои подклассы UIViewController реализованы полностью программно - без Xib и раскадровок.
LaunchScreen - это раскадровка.
Я явно убедился, что приложение не участвует ввосстановление состояния со следующим параметром в делегате приложения:
func application(_ application: UIApplication,
shouldSaveApplicationState coder: NSCoder) -> Bool { return false }
func application(_ application: UIApplication,
shouldRestoreApplicationState coder: NSCoder) -> Bool { return false }
Мой Info.plist, имеет настройку:
Application does not run in background = NO
Примечания
Я знаю о ignoreSnapshotOnNextApplicationLaunch()
в контроллере UIViewController encodeRestorableState(with coder: NSCoder)
метод, и вообще настройка восстанавливаемого состояния - за исключением того, что я не хочу иметь восстанавливаемое состояние.
Я хочу, чтобы приложение:
- перезапускалось с нуля всякий раз, когда онопо какой-либо причине завершается
- возврат из незавершенного приостановленного состояния
- не мигает снимок приложения при запуске после завершения при приостановлении
Создание и уничтожение представленияв методах App Delegate applicationWillResignActive(application:)
и applicationDidBecomeActive(application:)
также не помогают.
Каков наилучший способ сделать это?