Foreground
- foreground 상태의 앱은 사용자가 보고 있는 화면이다.
- CPU를 비롯한 시스템 자원의 우선순위가 높다
Background
- background 상태란 앱이 홈화면에 들어가서 사용자한테 보이지 않는 상태를 의미한다.
- 하지만 앱이 background 상태가 되어도 계속 실행해야 될 때가 존재한다.
- 예) 음악 스트리밍
Background 제약사항
- iOS 는 Background로 진입할 때 몇 가지 제약사항 권고
- 가능한 작은 메모리 공간을 사용해야 함 (시스템 리소스 해제, 메모리에서 해제 후 데이터를 디스크에 작성)
- priority에 의해 백그라운드 태스크는 포그라운드 태스크보다 더 낮은 자원 할당
- 포그라운드는 메모리 및 기타 시스템 리소스에 우선 순위를 가지며 시스템은 이러한 리소스를 사용할 수 있도록 필요에 따라 백그라운드 앱을 종료
App States
Not running
- 앱이 아예 실행되지 않았거나 시스템에 의해 종료되었을 때의 상황
Foreground
- app 이 실행되어 클라이언트에게 보여지고 있는 상태
Inactive
- 앱이 foreground 상태이기는 하나 이벤트를 받지 못한 상태 (Foreground 상태에서 전화가 왔을때, 잠금상태, 멀티태스킹 스크린에서는 InActive 상태를 가짐!)
Active
- 앱이 foreground에서 실행 중이며 이벤트를 받았을 때의 상황
Background
- 앱이 background 에 있지만 여전히 실행되고 있는 코드가 있는 상태
Suspended
- 앱이 background 에 있고 앱이 메모리에 남아 있긴 하나 실행되고 있는 코드가 없는 상태(App은 여전히 메모리에 존재하며 Suspend 상태가 될 당시의 상태를 저장하고 있지만, CPU나 배터리를 소모하지 않습니다. 언제든지 메모리 부족등의 이유로 종료됨)