lunchScreen/Interview_Questions

App의 Not running, Inactive, Active, Background, Suspended에 대해 설명하시오.

Opened this issue · 6 comments

App의 Not running, Inactive, Active, Background, Suspended에 대해 설명하시오.

애플리케이션의 생명주기에는 Not running, Inactive, Active, Background, Suspended의 5가지 상태가 있습니다.
Not running은 애플리케이션이 아직 실행되지 않았거나 시스템에 의하여 완전히 종료된 상태를 나타냅니다.
Inactive는 애플리케이션이 실행되고 이벤트를 받지 않는 상태로 애플리케이션이 Inactive 상태가 되면 곧바로 다른 상태로 변경이 됩니다.
Active는 애플리케이션이 실행되고 이벤트를 받는 상태입니다.
Background는 홈 화면으로 나가거나 다른 애플리케이션이 실행되어 애플리케이션이 foreground에서 실행되지 않고 있는 상태로, background 상태의 애플리케이션은 아무 작업도 하지 않고 몇 초가 지나면 Suspended 상태가 됩니다.

Not Running은 앱이 실행되지 않고 어떤 디바이스 리소스도 점유하지 않은 상태입니다. 앱을 실행할 경우 앱이 실행되고 있지만 이벤트를 받고 있지 않은 상태인 In-Active를 거쳐 일반적인 앱 실행 상태인 Active 상태가 됩니다. 이 때 홈버튼을 누르면 화면에 UI가 표시되지는 않지만 코드를 실행시킬 수 있는 상태인 Background 상태가 됩니다. 이 때 코드를 실행할 경우 실행 시간을 명시적으로 요청해야합니다. Background에서 실행할 코드가 없으면 해당 상태로 전환됩니다. 디바이스 리소스를 점유하고 있지만 어떠한 코드도 실행하지 않습니다. 디바이스 메모리가 부족해지면 OS에 의해 Not Running 상태로 전환될 수 있습니다.

Not Running은 앱이 아직 실행되지 않거나 완전히 종료되어 있는 상태를 말합니다.

Inactive는 Foreground 상태로 앱이 실행중이지만 사용자로부터 이벤트를 받을 수 없는 상태를 말합니다.
Multitasking window로 진입하거나 앱 실행중 전화, 알림 등에 의해 앱을 사용할 수 없게 될때 Inactive로 진입합니다. (전화는 좀더 알아봐야게따)

Active는 Foreground 상태로 앱이 실제로 실행중이고 사용자 이벤트를 받아서 상호작용할 수 있는 상태를 말합니다. Active가 되기 위해선 Inactive상태를 거칩니다.

Background 상태는 홈화면으로 나가거나 다른 앱으로 전환되어 현재 앱이 실질적인 동작을 하지 않는 상태를 말합니다. 음악 재생이나 앱을 사용하지 않는 동안 서버와 데이터를 동기화 하거나 타이머가 실행되어야 하는 경우 이 상태에서 할 수 있습니다.

Suspended 상태는 앱을 다시 실행했을 때 최근 작업을 빠르게 로드하기 위해 메모리에 관련 데이터만 저장되어 있는 상태를 말합니다. 앱이 Background로 진입했을 때 다른 작업을 하지 않으면 Suspended상태로 진입하고, Suspended 상태의 앱들은 iOS의 메모리가 부족해지면 가장 먼저 메모리에서 해제됩니다.


  • App States
    • Not Running : 실행되지 않았거나, 시스템에 의해 종료된 상태
    • Inactive : 실행 중이지만 이벤트를 받고있지 않은 상태. 예를 들어, 앱 실행 중 미리알림 또는 일정 Alert이 화면에 덮여서 앱이 실질적으로 이벤트는 받지 못하는 상태 등
    • Active : 애플리케이션이 실질적으로 활동하고 있는 상태.
    • Background : 백그라운드 상태에서 실질적인 동작을 하고 있는 상태. 백그라운드에서 음악을 실행하거나, 걸어온 길을 트래킹 하는 등의 상태
    • Suspended : 백그라운드 상태에서 활동을 멈춘 상태. 빠른 재실행을 위하여 메모리에 적재된 상태지만, 실질적으로 동작하고 있지는 않음. 메모리가 부족할때 비로소 시스템이 강제종료 됨

Not running : 앱이 실행되지 않았거나, 완전히 종료되어 동작하지 않는 상태
In-Active : 앱이 실행중이지만 사용자 이벤트를 받지 않는 상태
Active : 앱이 실행중이고 사용자 이벤트를 받아 상호작용할 수 있는 상태
Background : 앱을 실행시킨 뒤 홈화면으로 나가거나 다른 앱으로 이동하여 실질적인 동작을 하지 않는 상태
Suspended : 앱이 background 상태에 있다가 다시 실행될 때 최근작업을 빠르게 로드하기위해서 메모리에 관련 데이터만이 저장되어있는 상태. 앱이 background 상태로 2~3초간 유지되면 Suspended 상태로 전환됩니다. Suspended 상태의 app들은 iOS의 메모리가 부족해지면 가장 먼저 메모리에서 해제되기 때문에 앱을 오래 사용하지 않으면 다시 처음부터 실행됩니다.
※ In-Active + Active = Foreground