✅ iOS 앱의 생명주기에 대해 설명해주세요.
- VC의 생명주기와는 다르다.
- 총 5가지로 나눌 수 있다.
Not running
- 앱이 실행되지 않았거나, 완전히 종료되어 동작하지 않는 상태
Foreground(Inactive)
- 앱이 실행되면서 foreground에 진입하지만, 어떠한 이벤트도 받지 않는 상태이다.
- 앱의 상태 전환 과정에서 잠깐 머무는 상태이다.
- Launch Screen 상태
Foreground(Active)
- 앱이 실행 중이며, foreground에 있고, 이벤트도 받고 있는 상태이다.
Background
- 다른 앱으로 전환이 되었거나, 홈버튼을 눌러 밖으로 나갔을 때의 상태이다.
- 음악앱을 틀어놓고 다른 앱을 활용할 경우
- 타이머가 돌아가고 있는 경우
- 은행앱과 같이 다른 앱으로 넘어갈 때 보안화면을 띄울 경우 사용된다.
Suspended
- 앱이 background 상태있을 경우, 다른 작업을 하고 있지 않을 경우 suspended 상태로 들어가게 된다.
- iOS 운영체제가 만약 메모리가 부족하다고 생각이 들면 해당 상태의 앱을 가장 먼저 메모리에서 할당 해제시켜버린다.
✅ 앱의 각 상태(Not Running, Inactive, Active, Background, Suspended)에서 할 수 있는 작업은 무엇인가요?
Not Running
- 메모리에 로드가 되어있지 않기에 아무 작업을 하지 못할듯?..
Foreground Inactive
- UI 업데이트를 수행 but 사용자의 입력을 받을 수는 없다.
- 앱을 사용하고 있는데 갑자기 전화가 오거나, 시스템 경고가 왔을 때 해당 상태이다.
- Launch Screen
Foreground Active
Background
- 음악 사용 및 위치 정보 수신, API 호출도 가능(processing scheduled tasks)/ VoIP / Background Processing/Background Fetching / Bluetooth
- background execution mode를 활용하면 된다.
- 단, 디바이스 성능과 배터리 수명에 부정적인 영향을 미칠 수 있으므로 최대한 안하는 것이 좋다.
✅ 앱 상태 변화에 따라 호출되는 AppDelegate 메서드들을 나열해주세요.