Foreground vs Background

김준오·2021년 7월 18일
0

Swift

목록 보기
9/10

앱의 상태 4가지

  1. not running
  2. foreground
  3. background
  4. suspend

1. Not running

App을 실행하지 않은 상태.
혹은 실행되었지만 시스템에 의해 종료된 상태.

2. Foreground

App이 실행되어 사용자에게 보여지고 있는 상태
오직 하나의 App만 Foreground 상태를 가진다.
InActiveActive로 나뉨

InActive

이벤트는 받지 않는 상태
앱의 상태변화시 거치게 된다. (background로 전환시 거침)
foreground 상태에서

  • 전화가 왔을때
  • 알림센터
  • 멀티태스킹 스크린

에서는 InActive 상태를 가진다.

Active

이벤트를 받고 일반적으로 앱이 실행되는 상태
위의 경우를 제외한 나머지 상태

3. Background

Background 상태에 있지만 동작하는 code가 있는상태
Background 상태로 전환되기 전에 호출된 Task가 끝나지 않은경우 Background 상태로 넘어갔더라도 여전히 실행된다.
Background 상태로 전환된 후 호출된 Task는 Foreground 상태로 전환되면 실행

  • Foreground 상태에서 HomeScreen으로 이동한 상태
  • 잠금버튼 눌러서 잠금화면일때
  • 다른 앱으로 이동해서 다른앱이 켜졌을때

4. Suspend

Background 상태로 전환된 후 더 이상 작업을 수행하지 않으면 해당 App은 Suspend 상태로 바뀜
Background 상태에 있지만 동작하는 code가 없는상태

  • App은 여전히 메모리에 존재
  • Suspend 될 당시의 데이터를 저장
  • cpu나 배터리를 소모하지않음

시스템은 메모리가 부족해지면 Suspend 상태에 있는 앱을 메모리에서 제거한다.

앱의 생명주기

AppDelegate 함수

willFinishLaunching
: didFinish전에 호출되는 함수

willFinishLaunching
: didFinish전에 호출되는 함수

applicationDidBecomeActive
: active상태직후
: 화면으로 돌아올 때마다 실행

applicationWillResignActive
: active -> inactive 상태로 전환시 inactive전환 직전 실행
: 잠시 전환되는 경우

applicationDidEnterBackground
: background 상태전환 직후

applicationWillTerminate
: 앱 종료시

applicationWillEnterForeground
: background -> foreground 상태로 전환시 foreground직전

profile
jooooon

0개의 댓글