앱이 foreground에 있을 때와 background에 있을 때 어떤 제약사항이 있나요?

seuhong·2024년 1월 25일
0

iOS interview Question

목록 보기
8/11
post-thumbnail

foreground 상태의 앱은 사용자가 보고있는 화면이다. 그렇게 때문에 CPU를 비롯한 시스템 자원의 우선순위가 높은 상태라고 할 수 있음

background 상태의 앱은 홈화면에 들어가서 사용자에게 보이지 않는 상태.

하지만 background에 진입했다는 것이 앱이 실행중이지 않다는 의미가 아님!

음악 앱을 이용하여 노래를 듣는 경우처럼 다른 어플을 사용하더라도 멈추면 안되는 앱들의 경우처럼 앱이 background 상태가 되어도 계속 실행해야 될 때가 존재한다.

App State(앱 상태)

  • Not running: 앱이 아예 실행되지 않았거나 시스템에 의해 종료되었을 때의 상황
  • Inactive: 앱이 foreground 상태이기는 하나 이벤트를 받지 못한 상태
    멀티 태스킹 윈도우로 진입하거나 앱 실행중 전화, 알림 등에 의해 앱을 사용할 수 없게 되는 경우 이 상태로 진입하게 된다.
  • Active: 앱이 foreground 상태에서 실행 중이며 이벤트를 받았을 때의 상황
    바로 Active상태가 될 수 없고 Inactive 상태를 거쳐서 Active상태가 될 수 있음
  • Background: 앱이 background에 있으며 코드를 실행하고 있는 상태
  • 서버와 데이터 동기화, 타이머 등의 작업을 이 상태에서 할 수 있음
  • Suspend: 앱이 background이며 앱이 메모리에 남아있긴 하나 코드를 실행하고 있지 않은 상태
    iOS 메모리가 부족해지면 가장 먼저 메모리에서 해제됨. 따라서 앱을 종료시킨 적 없더라도 앱을 다시 실행하려고 하면 처음부터 다시 실행된다.
    Suspend는 앱을 다시 실행했을 때 최근 작업을 빠르게 로드하기 위해 메모리에 관련 데이터만 저장되어 있는 상태를 말함. 앱이 background 상태에 진입했을 때 다른 작업을 하지 않으면 Suspended 상태로 2~3초 이내에 진입하게 됨.

그렇다면 어떤 제약사항이 있나?

foreground 에서
메모리 및 기타 시스템 리소스에 대해서 background보다 높은 우선순위를 가지며 시스템은 이러한 리소스를 사용할 수 있도록 필요에 따라 background 앱을 종료시킬 수 있다.

background 에서

가능한 적은 메모리공간을 사용해야하며 (시스템 리소스 해제, 메모리에서 해제 후 데이터를 디스크에 작성) 우선 순위에 의해 foreground task보다 더 낮은 자원을 할당받게 됨.

즉,

제약사항

  • background
    -> "적은 메모리 공간을 사용해야한다."
    -> "우선순위에 의해 background의 task는 foreground보다 더 낮은 자원을 할당받는다."

이라고 할 만한 것들은 background에 있는듯 싶음”**

profile
완씨의 개발기록

0개의 댓글