프로세스 생명주기란?
프로세스 생명주기
- 메모리가 부족할때 종료할 프로세스를 결정하기 위해 프로세스를 중요도에 따라 분류한다.
- 앱 구성요소의 중요도 중 가장 높은 중요도를 따른다.
- 포그라운드 프로세스, 가시적 프로세스, 서비스 프로세스, 캐시된 프로세스1로 나뉜다.
포그라운드 프로세스 | 가시적 프로세스 | 서비스 프로세스 | 캐시된 프로세스1 | |
---|---|---|---|---|
Activity | onResume 호출 이후 | onPause 호출 이후 | onStop 호출 이후 | onDestory 호출 이후 |
Service | 주요 메서드 호출 중 | 포그라운드 서비스 실행중 | 일반 서비스 실행중 | 서비스 종료 이후2 |
Broadcast Receiver | onReceive 호출 중 | onReceive 호출 이후3 |
1비활성 상태로 인식되어 시스템에 의해 강제로 프로세스가 종료될 수 있다. 이 경우 Activity#onDestory()가 호출되지 않는 등 종료 동작이 감지되지 않을 수 있다.
2장기 작업을 실행하고 싶은 경우 Service#setForeground()를 사용해 포그라운드 서비스로 전환한다.
3장기 작업을 실행하고 싶은 경우 Workmanager, JobService, AlarmManager 등을 사용해 백그라운드 작업을 예약한다.