foreground로 올 때
- 화면 갱신(필요 시 데이터 리프레시)
- 중단했던 타이머/스트림/관찰 재개
- 권한/세션 상태 재확인
핵심은 "어떤 상태에서 어떤 작업을 해야 하는가"다. foreground에서는 사용자 상호작용/렌더링 중심, background에서는 저장/정리/중단 대비 중심으로 동작을 나눠야 한다.
기록 없음
| 상태 | 의미 | 주요 대응 |
|---|---|---|
| Active (Foreground) | 사용자 입력을 받고 UI가 실제로 동작 중 | UI 업데이트, 타이머/애니메이션 실행, 실시간 작업 수행 |
| Inactive | 전환 중 임시 상태(알림, 전화, 홈 전환 직전/직후) | 중요 상태 저장 준비, 민감 작업 일시 정지 |
| Background | 화면 밖에서 제한적으로 실행 | 데이터 저장, 정리(clean-up), 백그라운드 작업 최소화 |
| Suspended | 시스템이 실행을 멈춘 상태(코드 실행 없음) | 직전 단계에서 저장/정리를 끝내야 함 |
// iOS 13+ Scene 기반 앱 예시
// SceneDelegate: scene 단위 상태 변화
func sceneWillEnterForeground(_ scene: UIScene) {
// foreground 진입 준비
}
func sceneDidBecomeActive(_ scene: UIScene) {
// 사용자 상호작용 재개
}
func sceneWillResignActive(_ scene: UIScene) {
// 일시 정지 포인트
}
func sceneDidEnterBackground(_ scene: UIScene) {
// 저장/정리
}
// AppDelegate: 앱 전체 레벨 이벤트
func applicationDidEnterBackground(_ application: UIApplication) {
// 글로벌 리소스 정리, 공통 저장
}이 섹션은 위에서 나온 질문뿐 아니라, 새로운 개발적 지식과 시니어라면 알아야 할 내용까지 추가한다.