выполняется в рамках курса на stepik https://stepik.org/lesson/1240144/step/6?unit=1253896
Основные перемещения между состояния вызывают определенные методы указанные в объекте приложения. Эти методы дают вам возможность обработать изменение состояний.
- application:willFinishLaunchingWithOptions: — Этот метод вашего приложения позволяет вам выполнять код во время запуска приложения.
- application:didFinishLaunchingWithOptions: — Этот метод позволяет вам перед окончанием запуска выполнить код прежде чем показать ваше приложение пользователю.
- applicationDidBecomeActive: — Дает вам знать, что оно становятся приложением переднего плана. Используйте этот метод для последних приготовлений.
- applicationWillResignActive: — Дает вам знать, что приложение уходит из режима переднего плана. Используйте этот метод для помещения вашего приложения в режим покоя.
- applicationDidEnterBackground: — Дает вам знать, что приложение запущено в фоне и может быть выключено в любое время.
- applicationWillEnterForeground: — Дает вам знать, что ваше приложение перемещено из фона обратно на передний план, но то, что оно еще не активно.
- applicationWillTerminate: — Дает вам знать, что приложение было выключено. Этот метод не вызывается, если приложение было в состоянии suspended(приостановлено).
Переопределите все методы в AppDelegate Вашего проекта, в каждом из них вызвав метод print(), который выводит разные числа в зависимости от метода (любые на Ваше усмотрение). Запустите проект и открывайте/закрывайте/выбрасывайте приложение из памяти. В консоли наблюдайте порядок вывода чисел и обратите внимание на жизненный цикл приложения на практике.
- Note taken on [2025-03-23 вс 15:04]
по заданию два метода выводят в лог свои данные:
- application:willFinishLaunchingWithOptions
- application:didFinishLaunchingWithOptions
Все остальные методы из задания удалось переопределить,
но они не вызываются при изменнении состояний в приложении,
исследования причин показали,
что они перекрываются используемым по умолчанию после
создания проекта протоколом SceneDelegate
Таким образом, для отслеживания жизненного цикла приложения я использовал
имплементацию методов протокола SceneDelegate
func sceneDidBecomeActive(_ scene: UIScene) {
print(" 444 sceneDidBecomeActive")
}
func sceneWillResignActive(_ scene: UIScene) {
print(" 444 sceneWillResignActive")
}
func sceneWillEnterForeground(_ scene: UIScene) {
print(" 555 sceneWillResignActive")
}
func sceneDidEnterBackground(_ scene: UIScene) {
print(" 666 func sceneDidEnterBackground")
}
Данное отклонение от курса решает проблему, но может быть не желательным в дальнейшем.
- Note taken on [2025-03-23 вс 15:06]
завершено
ответ. Обратите внимание на то, чтобы доступ к проекту был открыт, в том числе и для комментариев. Преподаватель так оставит обратную связь.
***