AppDelegate 에도 applicationDidBecomeActive 가 있고
SceneDelegate 에도 sceneDidBecomeActive가 있다.
하지만 AppDelegate의 applicationDidBecomeActive는 작동하지 않는다.
?? 아비규환이다. 내 머리속 혼돈이 지나가고 있다. 정리할 필요가 있다. 정리해보자
PermalinkLife Cycle
우선 3가지 분류와 분류 속 5가지 상태가 있음을 알아야한다.
Permalink3가지 분류
Foreground
Background
그 외
Permalink5가지 상태
Foreground
Active
Inactive
Background
- Background
그 외
Not running
Suspended
Permalink앱 실행
PermalinkNot Running -> Foreground(진입) -> Active
willFinishLaunchingWithtOptions | AppDelegate |
didFinishLaunchingWithOptions | AppDelegate |
willConnectTo | SceneDelegate |
sceneWillEnterForeground | SceneDelegate |
sceneDidBecomeActive | SceneDelegate |
먼저 Scene이 작동되기 전에 당연하게 App 이 실행되어야 함
그래서 AppDelegate의
willFinishLaunchingWithOptions
-> didFinishLaunchingWithOptions
가 실행된다.
그리고 SceneDelegate 함수들이 작동한다.
willConnectTo
-> sceneWillEnterForeground
-> sceneDidBecomeActive
가 실행된다.
여기서 주의해야 할 점은 Active가 되기 위해서는 반드시 InActive를 거쳐야 한다는 것이다.
Permalink앱 Background로 돌리기
sceneWillResignActive | SceneDelegate |
sceneDidEnterBackground | SceneDelegate |
앱 실행시와 마찬가지로 Active는 반드시 InActive로 바뀌고 난 후에 상태 변경이 가능하다.
Permalink앱 종료
시뮬레이션에서 앱 종료 시연을 하려고 했는데 함수 실행이 안된다. 왜 그런지 아시는 분? ㅠㅠ
비정상적인 종료만 해서 그런가 ㅠ.ㅠ 하지만 이론적으로만 설명!
applicationWillTerminate | AppDelegate |
앱이 백그라운드에 들어간 후에 메모리가 줄어든다면 iOS에서 사용하지 않는 앱을 Kill 한다.
그럴 때 applicationWillTerminate
를 실행한다.
Permalink공부하면서 느낀 궁금증
Permalink왜 AppDelegate 함수는 실행 안되지?
생각해보면 AppDelegate에도 Foreground, Background 관련된 메소드가 있었다.
하지만 진작 실행은 안된다 왜일까??
정답은 공식문서에 있었음
scene을 사용한다면 UIKit은 이 메소드를 부르지 않는다.
SceneDelegate에서 설정해라. 라는 말이다.
PermalinkInactive의 기능은 무엇일까?
Foreground의 Inactive는 말 그대로 앱이 Foreground(전반)에 있지만 active 하지 못할 때이다.
시리가 켜지거나
전화 알림
Alert 뜨는 상황
즉, 사용자로부터 이벤트를 받지 못하는 상황이다.
Permalink참고한 문서
Subscribe to our newsletter
Read articles from Toby directly inside your inbox. Subscribe to the newsletter, and don't miss out.