프래그먼트는 항상 액티비티 내에서 호스팅되어야 하며 해당 프래그먼트의 수명 주기는 호스트 액티비티의 수명 주기에 직접적으로 영향을 받는다. 예를 들어 액티비티가 일시정지되는 경우, 그 안의 모든 프래그먼트도 일시정지되며 액티비티가 소멸되면 모든 프래그먼트도 마찬가지로 소멸된다. 그러나 액티비티가 실행 중인 동안에는 각 프래그먼트를 추가 또는 제거하는 등 개별적으로 조작할 수 있다.
✔ 프래그먼트 생명주기
기본적으로 프래그먼트는 액티비티에 안에서 호스팅된다. 그래서 프래그먼트의 수명 주기를 관리하는 것은 액티비티의 수명 주기를 관리하는 것과 매우 비슷하다.
💬 액티비티 수명 주기와의 조화
프래그먼트가 있는 액티비티의 수명 주기는 해당 프래그먼트의 수명 주기에 직접적인 영향을 미친다. 따라서 액티비티에 대한 각 수명 주기 콜백이 각 프래그먼트에 대한 비슷한 콜백을 발생시킨다. 예를 들어 액티비티가 onPause()를 받으면, 해당 액티비티 내의 각 프래그먼트가 onPause()를 받는다.
하지만 프래그먼트에는 프래그먼트의 UI를 빌드하고 소멸시키는 등의 같은 작업을 수행하기 위해 액티비티와의 고유한 상호작용을 처리하는 몇 가지 수명 주기 콜백이 더 있다. 이러한 추가 콜백 메서드는 다음과 같다.
⬜ onAttach()
onAttach()는 프래그먼트가 액티비티와 연결되어 있었던 경우 호출된다. 여기에 Activity가 전달된다.
⬜ onCreateView()
onCreateView()는 프래그먼트와 연결된 뷰 계층을 생성하기 위해 호출된다.
⬜ onActivityCreated()
onActivityCreated()는 액티비티의 onCreate() 메서드가 반환할 때 호출된다.
⬜ onDestroyView()
onDestroyView()는 프래그먼트와 연결된 뷰 계층이 제거되는 중일 때 호출된다.
⬜ onDetach()
onDetach() 프래그먼트가 액티비티와 연결이 끊어지는 중일 때 호출된다.
Reference
'Android' 카테고리의 다른 글
안드로이드의 Context (0) | 2023.07.11 |
---|---|
안드로이드의 앱 구성요소 (4대 컴포넌트) (0) | 2023.07.11 |
[Android] Activity Life Cycle (액티비티 생명주기) (1) | 2023.06.13 |
Android App Architecture (안드로이드 앱 아키텍처) (0) | 2023.06.07 |
Serializable & Parcelable (0) | 2023.05.30 |