[Android 개념] Fragment와 Lifecycle

이창민·2022년 7월 26일
0

Android 개념

목록 보기
4/9

프래그먼트

  • 프래그먼트는 액티비티의 모듈식 섹션입니다.
  • 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있습니다.(하위 액티비티 개념)
  • 자체 생명 주기를 가지고, 자체 입력 이벤트를 수신하고, 액티비티 실행 중 추가 및 삭제가 가능

프래그먼트를 액티비티 레이아웃에 추가하면, 해당 프래그먼트는 액티비티 뷰 계층 내에서 ViewGroup에 들어가고 자체적인 뷰 레이아웃을 정의합니다.

항상 액티비티 내에서 호스팅되며 해당 프래그먼트의 생명 주기는 호스트 액티비티의 생명 주기에 직접적인 영향을 받습니다.

프래그먼트 생명주기와 액티비티 생명주기

안드로이드 OS로 부터 액티비티 생명주기 함수들이 호출되면 이것과 부합되는 프래그먼트 생명주기 함수들이 호출되야합니다.
예를 들어 액티비티가 일시정지되는 경우, 그 안의 모든 프래그먼트도 일시정지되며 액티비티가 소멸되면 모든 프래그먼트도 마찬가지로 소멸됩니다.

프래그먼트 생명주기와 액티비티 생명주기의 공통점

프래그먼트 생명주기는 액티비티 생명주기와 유사하다.
상태가 전환될 때 오버라이드할 수 있는 함수들은 액티비티 생명주기 함수들과 대응된다.

프래그먼트는 액티비티를 대신해 작동하므로 프래그먼트의 상태는 액티비티의 상태를 반영해야 한다.
따라서 프래그먼트는 액티비티의 작업을 처리하기 위해 액티비티와 일치하는 생명주기 함수가 필요하다.

프래그먼트 생명주기와 액티비티 생명주기의 차이점

  1. 프래그먼트 생명주기 함수는 안드로이드 OS가 아닌 호스팅 액티비티의 FragmentManager가 호출한다.
    프래그먼트는 액티비티가 내부적으로 처리해 안드로이드 OS는 프래그먼트에 관해서 아무것도 모른다.

  2. 액티비티 생명주기 함수는 안드로이드 운영체제의 컴포넌트중 하나인 ActivityManager가 Activity의 인스턴스를 생성하고 인스턴스의 onCreate함수를 호출한다.
    즉, 액티비티 라이프사이클 함수들을 호출합니다.
    (Intent가 시작 액티비티를 ActivityManager에 알려줌)

프래그먼트 생성

  • onCreate :
    onCreate가 실행되었다면 이미 onAttach()가 실행된 상태
    프래그먼트를 생성할 때 호출되는 함수
    변수 초기화

  • onCreateView :
    레이아웃을 인플레이트하는 곳
    View객체를 얻을 수 있으므로 UI 관련 초기화를 하면 된다.
    매개변수로 전달되는 container는 Activity의 ViewGroup이다.
    다른 매개변수인 savedInstanceState는 Fragment가 재개되는 경우 이전 상태에 대한 데이터 제공

  • onPause :
    이 메소드가 호출되면 사용자가 프래그먼트를 떠난다는 첫번째 신호(소멸 아님)
    지속되어야하는 변경사항 커밋

참고자료

  1. https://developer.android.com/guide/components/fragments#Adding
  2. https://developer.android.com/guide/fragments/lifecycle
profile
android 를 공부해보아요

0개의 댓글