Fragment
1. 하나의 UI 내에서 독립적으로 동작하는 화면의 부분.
: 동작은 독립적으로 관리 되지만 프레그먼트 자체는 독립적일 수 없음
: Activity나 다른 프레그먼트에 종속되어 있음
2. 자체 layout(xml 파일)을 가질 수 있으며 자체 LifeCycle 보유
: 레이아웃, 동작처리(이벤트), 수명주기의 독립적인 관리 용이
3. 액티비티 분할하면서 UI 일부분 정의 가능
: 유연한 UI 구현 가능 및 재사용성 높음. 반복적으로 재사용 가능
Fragment LifeCycle
- Fragment 가 백스택에 최상단으로 올라왔을 경우에는 생명주기가 CREATED - STARTED - RESUMED 순으로 진행
- 반대로 백스택에서 pop 됐을 경우에는 RESUMED - STARTED - CREATED - DESTROYED 순으로 진행
- 프래그먼트 생명주기는 호스트 액티비티나 호스트 프래그먼트 생명주기보다 앞설 수 없음
- 호스트 액티비티나 프래그먼트는 자식 프래그먼트보다 먼저 실행되어야 하고, 자식 프래그먼트는 호스트 액티비티나 호스트 프래그먼트보다 먼저 정지되어야 함
: Tip! 위와 같은 상황을 방지하기 위해 XML 파일에 <fragment> 태그로 프래그먼트 대신 <FragmentContainerView> 를 추가하면 된다

1. On Attach()
: Activity에 Fragment가 붙을 때 호출
: Fragment가 완벽하게 생성된 상태 아님
: 인자로는 context가 주어짐
2. On Create()
: Activity와 같이 초기화가 필요한 리소스들을 초기화
: Fragment를 생성하면서 넘겨준 값이 있다면, 여기서 변수에 넣어준다.
: UI 초기화는 하지못함
: Activity의 onCreate()에서는 View나 UI 관련 작업을 할 수 있지만, Fragment onCreate()에서는 할 수 없음
3. On CreateView()
: xml에 표기된 Layout들을 객체화해서 사용할 수 있게 해주는 곳.
: Layout객체를 얻을 수 있으므로, 버튼이나 텍스트뷰 등을 초기화 할 수 있음.
: View를 반환. (UI를 제공하지않는 경우에는 Null을 반환)
: Fragment에 속한 View나 ViewGroup에 대한 UI 바인딩 작업을 할 수 있음
: Fragment에서 UI를 그릴 때 호출되는 콜백
: 매개변수 container는 Activity의 ViewGroup이며, 여기에 Fragment가 위치
: 매개변수 savedInstanceState는 Bundel 객체로 Fragment가 재개되는 경우 이전 상태에 대한 데이터를 제공
4. On ActivityCreated()
: Fragment에서 onCreateView를 마치고, Activity에서 onCreate()가 호출되고 나서 호출
: Activity와 Fragment의 뷰가 모두 생선된 상태로, View를 변경하는 작업이 가능한 단계
: Activity에서 Fragment를 모두 생성하고 난 다음에 호출
: Acitvity와 Fragment의 View가 모두 생성되고, 연결된 상태.
5. On Start()
: Fragment가 사용자에게 보여지기 직전 호출
6. On Resume()
: Fragment가 화면에 보여지는 단계.
: 사용자와의 상호 작용이 가능 ex) 버튼클릭
: onPause() 되기 전까지는 이 단계에서 유지
7. On Pause()
: Parent Activity가 아닌 다른 Activity가 위로 올라오거나, 다른 Fragment가 add되면서 포커스를 잃을때 일시정지 상태로 들어간다.
: Fragment와 사용자의 상호작용이 중지
: UI관련 처리를 정지하고, 중요한 데이터를 저장
8. On Stop()
: Fragment가 완전히 가려지는 경우, onPause()에 이어 onStop() 까지 실행
: Fragment는 더이상 보이지않고, Fragment 기능은 중지
: 이 단계에서 시스템이 자동으로 onStateInstance()를 호출하여 UI의 상태를 저장하므로 Activity를 다시 띄우면 이전 상태 그대로 보임
9. On DestoryView()
: Fragment와 관련된 View가 제거될 때 실행
: Activity에서 Fragment 생성 시 addToBackStack()을 요청했을 경우 onDestroy()를 호출하지 않고, 인스턴스가 저장되어 있다가 Fragment를 다시 부를 때 onCreateView()를 실행하여 다시 화면에 보여짐
10. On Destroy()
: View가 제거된 후 Fragment가 완전히 소멸되기 전에 호출
11. On Detach()
: Fragment가 완전히 소멸되고, Activity와의 연결도 끊어질 때 실행
※ 참고사이트
[Android] Fragment 개념 및 간단 사용방법 Kotlin
Fragment는 무엇인가? 우리가 자주쓰는 카카오톡을 예로 들자 카카오톡 검정색 테두리 부분이 Activity 부분이다. Activity안에 여러 Fragment를 만들어 넣을 수 있는 View공간을 만든다. (하얀공간) 오른쪽
jutole.tistory.com
'개발 > Android' 카테고리의 다른 글
| [Android] Intent(인텐트) 정리 (0) | 2025.02.12 |
|---|---|
| [Android] ViewModel 정리 (0) | 2025.02.11 |
| [Android] LiveData 정리 (0) | 2025.02.11 |
| [Android] 관찰자 패턴(Observer Pattern) (0) | 2025.02.11 |
| [Android] Activity 정리 (0) | 2025.02.10 |