20230912 Fragment LifeCycle

기메단·2023년 9월 12일
0

TIL

목록 보기
41/44

Fragment

앱 UI의 재사용 가능한 부분을 나타내고, 자체 레이아웃 정의 및 관리, 자체 수명 주기를 보유함.

단독으로는 실행이 불가하고 activity나 다른 프래그먼트에서 호스팅 되어야 한다. 

생명주기

1. onAttach()

액티비티에서 프래그먼트 추가 시 호출 

인자로 context가 주어진다. 

2. onCreate()

프래그먼트가 생성될 때 호출되는 메서드. 액티비티에서 bundle로 데이터가 넘어온다. 
UI에 관련된 작업 수행 불가  Ex) View, ViewGroup의 UI 바인딩 등
UI 관련 작업 외 변수 초기화 등의 작업 가능

3. onCreateView()

UI 관련 작업 수행 가능. 
View와 관련된 객체를 초기화 할 수 있음. 

4. onViewCreated()

onCreateView()를 통해 반환된 뷰 객체는 onViewCreated()의 인자로 전달된다. 

 View의 초기값 설정, LiveData 옵저빙, RecyclerView, ViewPager2에 사용될 
 Adapter 할당은 이 메서드에서 해주는 것이 적절함
 

5. onViewStateRestored()

프래그먼트의 뷰들이 모두 생성된 이후에 실행.
View Lifecycle 상태 : INITIALIZED -> CREATED

6. onStart()

프래그먼트가 사용자에게 보여질 수 있을 때 호출 (액티비티와 유사)
View lifecycle 상태 : CREATED → STARTED

7. onResume()

프래그먼트와 사용자가 상호작용할 수 있는 상태일 때 호출.
Fragment가 보이는 상태에서 모든 Animator와 Transition 효과가 종료되고,
프래그먼트와 사용자가 상호작용 할 수 있을 때 onResume Callback
View Lifecycle 상태 : STARTED -> RESUMED

8. onPause()

프래그먼트가 visible일 때 호출. 
View Lifecycle 상태 : RESUMED -> STARTED

9. onStop()

프래그먼트가 화면에 보이지 않을 때 호출.
부모 액티비티, 프래그먼트가 중단될 때, 상태가 저장될 때 호출.
View와 Lifecycle 상태 : STARTED → CREATED

10. onDestroyView()

모든 exit animation, transaction이 완료되고 Fragment가 화면으로부터 벗어났을 경우 호출.
가비지 컬렉터에 의해 수거될 수 있도록 Fragment View에 대한 모든 참조가 제거되어야 한다.
View Lifecycle 상태 : CREATED -> DESTROYED

11. onDestroy()

Fragment가 제거되거나, FragmentManager가 destroy 됐을 경우, 호출.
생명주기의 끝을 알림. 

0개의 댓글