[TIL] #45 Fragment Lifecycle

Yeon·2023년 9월 22일
0

내일배움캠프 - Kotlin

목록 보기
58/58
post-thumbnail

🌀 Fragment Lifecycle

1. onAttach()

  • 프래그먼트가 액티비티에 붙을 때 호출
  • 인자로 Context가 주어짐
override fun onAttach(context: Context) {
    super.onAttach(context)
}

2. onCreate()

  • 프래그먼트가 액티비티의 호출을 받아 생성
  • Bunddle로 액티비티로부터 데이터가 넘어옴
  • UI 초기화는 불가능
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
}

3. onCreateView()

  • 레이아웃 inflate 담당
  • savedInstanceState로 이전 상태에 대한 데이터 제공
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    return super.onCreateView(inflater, container, savedInstanceState)
}

4. onViewCreated()

  • onCreagteView()를 통해 반환된 View 객체는 onViewCreated()의 파라미터로 전달됨
    • Lifecycle이 INITIALIZED 상태로 업데이트가 됨
    • View의 초기값 설정, LiveData 옵저빙, RecyclerView, ViewPager2에 사용될 Adapter를 입력해주기 좋은 위치!
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
}

5. onViewStateRestored()

  • 저장해둔 모든 state 값이 프래그먼트의 View의 계층 구조에 복원되었을 때 호출
    • ex. 체크박스 위젯이 현재 체크되어있는가
  • View lifecycle owner : INITIALIZED → CREATED 변경
override fun onViewStateRestored(savedInstanceState: Bundle?) {
    super.onViewStateRestored(savedInstanceState)
}

6. onStart()

  • 사용자에게 보여질 수 있을 때 호출
  • 액티비티의 onStart() 시점과 유사
  • 프래그먼트의 childFragmentManager을 통해 FragmentTransaction을 안전하게 수행할 수 있음
  • View lifecycle owner : CREATED → STARTED 변경
override fun onStart() {
    super.onStart()
}

7. onResume()

  • 사용자와 프래그먼트가 상호작용 할 수 있는 상태일 때 호출
  • 프래그먼트가 보이는 상태에서 모든 Animator와 Transition 효과가 종료됨 프래그먼트와 사용자가 상호작용 할 수 있을 때 onResume Callback
override fun onResume() {
    super.onResume()
}

8. onPause()

  • Fragment가 visible 일 때 onPause()가 호출
  • Faragment와 View의 Lifecycle이 PAUSED가 아닌 STARTED가 됨
override fun onPause() {
    super.onPause()
}

9. onStop()

  • Fragment가 더 이상 화면에 보여지지 않게 되면 onStop() 콜백 호출
    부모 액티비티, 프래그먼트가 중단될 때, 상태가 저장될 때 호출
  • View와 Lifecycle : STARTED → CREATED
  • API 28버전을 기점으로 onSaveInstanceState() 함수와 onStop() 함수 호출 순서가 달라짐
    • onStop()이 FragmentTransaction을 안전하게 수행하는 마지막 지점이 됨
override fun onStop() {
    super.onStop()
}

10. onDestoryView()

  • 모든 exit animation, transaction이 완료되고 Fragment가 화면으로부터 벗어났을 경우 호출
  • view와 lifecycle : CREATED → DESTROYED
  • 가비지 컬렉터에 의해 수거될 수 있도록 Fragment View에 대한 모든 참조가 제거되어야 함
  • getViewLifecycleOwnerLiveData()
override fun onDestroyView() {
    super.onDestroyView()
}

11. onDestroy()

  • Fragment가 제거되거나, FragmentManager가 destroy 됐을 경우, onDestroy() 콜백 함수 호출
  • Fragment Lifecycle의 끝을 알림
override fun onDestroy() {
    super.onDestroy()
}

12. onDetach()

  • 프래그먼트가 액티비티로부터 해제되어질 때 호출
override fun onDetach() {
    super.onDetach()
}



[참고 사이트]

'프래그먼트 수명 주기 처리', Developers

0개의 댓글