onAttach()

- 프래그먼트가 액티비티에 연결될 때 호출됨
- Fragment가 Activity에 처음 붙을 때 실행됨
- context 매개변수를 통해 액티비티의 참조를 가져올 수 있음
- 활용 예: 액티비티와의 인터페이스 설정, Context 기반 리소스 초기화

 

 

 

onCreate()

- 프래그먼트가 생성될 때 호출됨
- onAttach() 이후 실행됨
- 프래그먼트가 유지해야 하는 상태 데이터를 복원하는 역할
- savedInstanceState가 null이 아니면, 이전 상태를 복원할 수 있음
- 활용 예: ViewModel 초기화, 인스턴스 변수 설정, setHasOptionsMenu(true) 호출

 

 

onCreateView()

- 프래그먼트의 UI를 생성하는 단계
- XML 레이아웃을 인플레이트하여 View 객체를 반환해야 함
- 활용 예: binding 객체를 생성하고, return binding.root로 반환

 

 

onViewCreated()

- UI(View)가 생성된 후 호출됨
- onCreateView()에서 반환된 View 객체를 사용할 수 있는 시점
- UI 초기화 및 이벤트 리스너를 설정할 수 있음
- 활용 예: 리사이클러뷰 어댑터 설정, 버튼 클릭 리스너 등록

 

 

onViewStateRestored()

- onCreateView() → onViewCreated() 이후에 호출됨
- savedInstanceState가 있을 경우, UI 상태를 복원하는 역할
- 활용 예: 화면 회전 시 이전 UI 상태 유지

 

 

onStart()

- 프래그먼트가 사용자에게 보이기 시작하는 시점
- 아직 사용자 입력을 받을 수 있는 상태는 아님 (완전히 활성화 X)
- 활용 예: UI 요소를 갱신하거나, 애니메이션을 시작할 때

 

 

onResume()

- 프래그먼트가 완전히 활성화되어 사용자와 상호작용 가능한 상태
- 액티비티의 onResume()과 동일한 역할
- 활용 예: 센서, 카메라, GPS 등의 리소스 활성화

 

 

onPause()

- 프래그먼트가 일시 정지됨
- 액티비티가 onPause() 상태가 되거나, 프래그먼트가 다른 프래그먼트에 의해 가려질 때 호출됨
- 활용 예: 애니메이션 중지, 센서 비활성화

 

 

onStop()

- 프래그먼트가 화면에서 더 이상 보이지 않을 때 호출됨
- 액티비티가 onStop() 상태가 되거나, 프래그먼트가 백스택에 들어가 있을 때 발생
- 활용 예: 네트워크 요청 해제, 데이터 저장

 

 

onSaveInstanceState()

- 프래그먼트의 상태를 저장하는 역할
- 화면 회전과 같은 프로세스 종료 상황에서 데이터를 저장할 수 있음
- 활용 예: 입력된 텍스트 값 저장, 스크롤 위치 저장

 

 

onDestroyView()

- 프래그먼트의 뷰가 제거될 때 호출됨
- onCreateView()에서 생성한 View를 정리하는 역할
- 활용 예: binding = null로 설정하여 메모리 누수 방지

 

 

onDestroy()

- 프래그먼트가 완전히 제거될 때 호출됨
- ViewModel 등의 객체는 유지되지만, 인스턴스 변수는 정리해야 함

 

:)실제 동작을 통해 알아보자

 

1. 프래그먼트 생성

 

 

2. FirstFragment()->SecondFragment() 로 이동 (백스택에 포함)

 

 

 

3. FirstFragment()->SecondFragment() 로 이동 (백스택에 미포함)

 

4. (2.) 에서 뒤로가기로 FirstFragment()로 돌아갔을때

 

 

3번에서 뒤로가기를 누르면 백스택에 아무것도 없기때문에 앱이 종료된다.

 

예제코드)https://github.com/chaesoobum/FragmentLifeCycle