[Android] Fragment 생명주기

SSUN·2023년 4월 21일

Android

목록 보기
4/4
post-thumbnail

Fragment의 생명주기

  • Fragment View의 생명주기는 Fragment 객체의 생명주기보다 짧다

onAttach()

  • Fragment가 Activity와 연결되어 있었던 경우 호출된다
  • 인자로 Context가 주어진다
  • 여기에서 Activity가 전달된다

onCreate()

  • 초기화해야하는 리소스들을 여기서 초기화한다
  • Fragment를 생성하면서 넘겨준 값들이 있으면 이곳에서 변수에 넣어준다
  • 이곳에서 UI 초기화는 불가능하다
  • 본격적으로 Fragment가 Activity에 호출을 받아 생성되는 시점

onCreateView()

  • Layout을 inflate하는 곳이다
  • View 객체를 얻을 수 있으며, 버튼이나 텍스트뷰 등을 초기화할 수 있다
  • Fragment가 자신의 인터페이스를 처음 그리기 위해 호출
  • View를 반환해야하며 UI를 제공하지 않는 경우 null을 반환하면 된다
  • Fragment에 속한 각종 View나 ViewGroup에 대한 ui 바인딩을 할 수 있다
  • 매개변수로 전달되는 container가 Activity의 ViewGroup이며, 이곳에 Fragment가 위치하게 된다
  • savedInstanceState는 Bundle 객체로 Fragment가 재개되는 경우 이전 상태에 대한 데이터를 제공한다

onViewCreated()

  • onCreateView를 통해 반환된 View 객체는 onViewCreated의 파라미터로 전달된다
  • View의 초깃값 상태 설정, LiveData 옵저빙, RecyclerView, ViewPager2에 사용될 Adapter 세팅은 이곳에서 해줘야한다

onActivityCreated()

  • 프래그먼트에서 onCreateView를 마치고 액티비티에서 onCreate가 호출되고 나서 호출되는 함수
  • 액티비티와 프래그먼트의 뷰가 모두 생성된 상태로, View를 변경하는 작업이 가능한 단계이다
  • 액티비티에서 프래그먼트를 모두 생성하고 난 다음에 호출된다
  • 액티비티와 프래그먼트가 연결되는 시점이다
  • Activity와 Fragment의 뷰가 모두 생성되고, 연결된 상태이다

onViewStateRestored()

  • 저장해둔 모든 state 값이 Fragment의 View의 계층 구조에 복원되었을 때 호출된다

onStart()

  • 프래그먼트가 사용자에게 보여지기 전에 호출되는 함수
  • 유저에게 프래그먼트가 보이도록 해준다
  • Activity와 같이 Fragment가 화면에 보여지기 직전 빠르게 실행된다
  • 여기서 Activity는 시작됨 상태이다

onResume()

  • 프래그먼트가 비로소 화면에 보여지는 단계이다
  • 사용자에게 포커스를 잡은 상태로 사용자와의 상호작용이 가능하다
  • Activity와 마찬가지로 이벤트가 발생하여 Fragment가 가려지기 전까지 이 상태가 유지된다

onPause()

  • 사용자와의 상호작용을 중지한다
  • 부모 Activity가 아닌 다른 Activity가 위로 올라오거나, 다른 Fragment가 add되는 경우 일시정지 상태로 들어간다
  • UI관련 처리를 정지하고, 중요한 데이터를 저장한다

onStop()

  • 프래그먼트는 더이상 보여지지 않게되며, 프래그먼트 기능이 중지된다
  • Fragment가 완전히 가려지는 경우, onPause()에 이어 onStop()까지 실행된다
  • 시스템에서 onStateInstance()를 호출하여 UI의 상태를 저장하므로 Activity를 다시 띄우면 이전 상태가 그대로 보여진다

onDestroyView()

  • Fragment와 관련된 view가 제거될 때 실행된다
  • Activity에서 Fragment 생성 시 addToBackStack()를 요청했을 경우 onDestroy()를 호출하지 않고 인스턴스가 저장되어 있다가 Fragment를 다시 부를 때 onCreateView()를 실행하여 다시 화면에 보여지게 한다

onDestroy()

  • view가 제거된 후 Fragment가 완전히 소멸되기 전에 호출된다

onDetach()

  • Fragment가 완전히 소멸되고, Activity와의 연결도 끊어질 때 실행된다

출처
https://asong-study-record.tistory.com/69

profile
부딪히며 성장하는 예비개발자

0개의 댓글