Android Application & Activity Lifecycle
안드로이드 어플리케이션과 액티비티 생명주기
1. 안드로이드 어플리케이션
- 안드로이드 5.0(롤리팝) 이전에는 달빅 가상머신(Dalvik Virtual Machine) 의 인스턴스에서 실행
- 각 가상 머신은 리눅스 운영체제의 별개 프로세스로 실행
- 5.0 이후부터는 가상머신이 없어지고 안드로이드 런타임(ART) 시스템이 리눅스 프로세스로 실행
- 디바이스의 리소스(메모리)가 한계에 도달하면 안드로이드 시스템에서 메모리 해레를 위해 프로세스를 중단
- 프로세스 중단 결정시 모든 프로세스의 우선순위와 상태를 고려, 구글에서는 중요도 서열(Importance hierarchy) 생성
- 가장 낮은 순위의 프로세스를 중단하고, 충분한 메모리 확보까지 중단 작업을 반복
2. 액티비티 생명주기
- 액티비티의 현재 상태는 액티비티 스택 안에서의 위치에 따라 결정
- 선 실행된 액티비가 스택에 놓이고(push) 다음으로 호출되는 액티비티는 스택의 맨 위에 위치
- 최상위 액티비티가 활성화된 액티비티 이며, 액티비티 종료시 스택에서 빠지게 되고(pop) 바로 밑에 액티비티가 활성화
- 만일 시스템의 리소스(메모리)가 부족할 경우 최하단의 액티비티부터 제거
3. 액티비티 상태
- Active/Running, 실행
- Paused, 일시 중지
- Stopped, 중단
- Killed, 소멸
|