원문 The Android Lifecycle cheat sheet — part II: Multiple activities을 번역한 글입니다.
(2) Multiple Activities
여러 컴포넌트의 Lifecycle을 표현할 때 다이어그램을 사용했지만, 각 그룹 사이의 호출 순서는 다를 수 있다. 각 그룹 내에서의 순서에만 주목하면 된다. 또한 custom launch mode나 task에서는 적용되지 않는다.
상황 1. 백스택 - Activity 간 이동
새로운 액티비티가 시작되면, Activity 1은 사용자가 홈 버튼을 눌렀을 때와 비슷한 상황을 겪게 된다.
뒤로가기 버튼이 눌리면 Activity 2는 소멸(destroy)되고 끝난다(finish).
👉 상태 관리하기
onSaveInstanceState
는 호출되지만 onRestoreInstanceState
는 호출되지 않는다. Activity :2에서 구성 변경이 일어나면 Activity 1는 포커스를 다시 얻었을 때 소멸되고 다시 생성될것이다. 그래서 상태를 저장하는 것이 중요하다.
상황 2. 백스택 - 구성이 변경됐을 때 백스택에 있는 Activity
👉 상태 관리하기
상태를 저장하는 것은 Activity가 foreground에 있을 때에만 중요한 게 아니다. 스택에 존재하는 모든 Activity는 구성 변경 후 UI를 다시 생성할 때 상태 복원이 필요하다.
또한, 시스템이 앱의 프로세스를 언제든지 kill할 수 있기 때문에 어떠한 상황에서는 상태를 복원할 준비가 되어있어야 한다.
상황 3. 백스택 - 앱 프로세스가 kill될 때
Android OS는 자원이 부족하면 백그라운드에 있는 앱을 kill한다.
👉 상태 관리하기
백스택의 상태를 저장되지만, 자원을 효율적으로 관리하기 위해 Activity가 재생성될 때에만 상태를 복원(onRestoreInstanceState
)한다.
비교
REFERENCE
The Android Lifecycle cheat sheet — part II: Multiple activities