원문 The Android Lifecycle cheat sheet — part III : Fragments을 번역한 글입니다.
(3) Fragment
상황 1. Activity와 Fragment의 시작과 종료
- Activity의
onCreate
는 Fragment의 Lifecycle 이전에 실행됨 -
onStart
나onResume
같이 병행으로 되어있는 것은 Activity가 먼저 실행될수도, Fragment가 먼저 실행될 수도 있음- EX) Activity의 onStart -> Fragment의 onStart -> Fragment의 onResume -> Activity의 onResume 순서로 실행될 수 있음
- 각각의 실행 순서를 관리함으로써 Race Condition을 피할 수 있어야 함
상황 2. Activity와 Fragment의 회전
👉 상태 관리하기
Fragment는 Activity와 비슷하게 저장/복원된다.
Fragment에는 onRestoreInstanceState
가 없다는 차이점이 있지만, onCreate
, onCreateView
, onActivityCreated
에서는 Bundle을 사용할 수 있다.
상황 3. Activity와 retained Fragment의 회전
Fragment는 구성 변경 시에 같은 인스턴스를 사용할 수 있다. 이러한 상태를 Fragment가 retain 됐다고 한다.
Activity가 재생성된 후에는 같은 Fragment의 Instance가 사용되기 때문에, 회전 후에 해당 Fragment는 소멸되지도 새로 생성되지도 않는다. 다만 여전히 onActivityCreated에서 Bundle을 쓸 수 있다.
Retained Fragment는 구성 변경을 위한 데이터 저장을 위한 경우가 아니라면 사용하지 않는 것이 좋다.
비교
REFERENCE
The Android Lifecycle cheat sheet — part III : Fragments