[Android] 프로세스 우선순위

uuranus·2024년 2월 6일
post-thumbnail

안드로이드 앱은 하나의 프로세스로서 각자의 독립된 메모리 공간을 가지고 실행된다.
하지만, 메모리 공간이 부족해질 경우 시스템이 프로세스를 강제로 종료할 수 있는데 이 때 프로세스들의 우선순위에 따라서 먼저 종료될 프로세스가 결정된다.

1. 포그라운드 프로세스 (Foreground Process)

사용자와 현재 상호작용하고 있는 프로세스

  • 직접 상호작용하고 있는 onResume 상태의 액티비티 뿐만 아니라

  • BroadcastReceiver.onReceive()가 실행되고 있는 BroadcastReceiver, Service Callback(Service.onCreate(), Service.onStart(), Service.onDestroy()가 실행되고 있는 서비스도 포그라운드 상태이다.

  • 포그라운드 상태인 프로세스는 적기 때문에 거의 제거될 일 없다.

2. 가시적 프로세스 (Visible Process)

사용자가 해당 작업이 존재함을 알고 있는 프로세스

  • onPause 상태에 있는 액티비티
  • foreground Service
    등이 존재

3. 서비스 프로세스 (Service Process)

startService로 실행되고 있는 서비스

  • 사용자에게 보이지는 않지만 백그라운드에서 이미지 업로드/다운로드 하는 것처럼 사용자가 관심을 가지고 있는 작업 실행

4. 캐시 프로세스 (Cached Process)

현재 당장 필요하지 않아서 언제든 삭제될 수 있는 프로세스

  • onStop 상태인 사용자에게 안 보이는 액티비티가 존재

4 -> 3 -> 2 -> 1 순서로 삭제됨

링크

https://developer.android.com/guide/components/activities/process-lifecycle

profile
Frontend Developer

0개의 댓글