
앱 생명 주기(Application Life Cycle)란 앱이 실행되고 동작하다가 종료되기까지 일련의 과정을 말합니다.
- Not Running(Terminated) : App이 아직 실행되지 않았거나 시스템에 의해 완전히 종료된 상태입니다.
- Inactive(Foreground) : App이 실행 중이지만 이벤트를 받지 않는 상태입니다. Active 상태로 넘어가기 전에 앱은 반드시 이 상태를 거칩니다. 미리알림 같은 특정 알림창이 화면을 덮어서 앱이 실질적으로 event를 받지 못하는 상태 등이 여기에 해당됩니다.
- Active(Foreground) : App이 실행 중이고 이벤트를 받고 있는 상태입니다. Foreground 상태에 있는 app들은 평소에 이 상태에 머물러 있습니다.
- Background : App이 다른 앱으로 전환되거나 홈 화면으로 나갔을 때 실질적인 동작을 하고 있는 상태입니다. 백그라운드에서 동작하는 코드를 추가하면 suspended 상태로 넘어가지 않고 백그라운드 상태를 유지하게 됩니다. 처음부터 background 상태로 실행되는 app은 inactive 대신 background 상태로 진입합니다. 음악을 실행하고 홈 화면으로 나가도 음악이 나오는 상태가 이 경우에 해당됩니다.
- Suspended : App이 background 상태에서 추가적인 작업을 하지 않으면 곧바로 suspended 상태로 진입합니다. 앱을 다시 실행할 경우 빠른 실행을 위해 메모리에만 올라가 있습니다. 메모리가 부족한 상황이 되면 iOS는 suspended 상태에 있는 앱들을 메모리에서 해제시켜서 메모리를 확보합니다.