본문 바로가기
Android

[안드로이드] Fragment의 LifeCycle과 동작원리

by JongSeok 2023. 4. 11.

안드로이드에서 Fragment는 4대 구성요소에는 포함되지 않지만 4대 구성요소만큼 중요하고 자주 쓰이는 컴포넌트입니다.

게다가 최근 구글에서는 최근 하나의 액티비티에 다수의 프래그먼트가 존재하는 SAA(Single Activity Architecture) 패턴을 권장하기 때문에 Fragment의 동작원리에 대해 공부할 필요를 느껴 이번 포스팅을 통해 정리해 보겠습니다.

Fragment의 특징

  • 프래그먼트는 자체적인 생명주기를 가지며 상태, 생명주기 전환은 FragmentManager에 의해 관리됩니다.
  • 프래그먼트는 독립적으로 존재할 수 없고, 항상 액티비티 위에 존재하고 동작합니다.
  • 하나의 프래그먼트는 다른 액티비티나 프래그먼트에서 재사용이 가능합니다.

Fragment의 생명주기

출처 : Google Developers

프래그먼트는 액티비티 위에 존재하기 때문에 액티비티의 생명주기와 유사한 구조를 가집니다.

onAttach()

위의 이미지에는 표시되어 있지 않지만 onCreate 이전에 프래그먼트가 호스트 액티비티를 찾아 붙는(?), 연결되는 시점에 호출됩니다.

onCreate()

프래그먼트가 생성되는 시점에 호출되며 아직 UI는 초기화되지 않은 상황입니다. 따라서 UI 수정은 불가능하고, 이전 액티비티/프래그먼트로부터 bundle을 통해 arguments를 전달받습니다.

onCreateView()

레이아웃 inflate를 담당하며 저는 주로 viewBinding을 설정합니다.

onViewCreated()

onCreateView()가 정상적인 Fragment View 객체를 반환했을 때 호출됩니다.

이때부터 View Lifecycle이 초기화(INITIALIZED)되기 때문에 레이아웃의 뷰를 설정하는 작업을 하기에 적절합니다.

onStart()

프래그먼트의 뷰 작업이 완료되고 사용자에게 화면이 보여지는 시점입니다.

 

728x90
반응형