Fragment 생명주기

jihyo·2022년 4월 2일
0

Android

목록 보기
9/17

프래그먼트는 Activity와 마찬가지로 생명주기가 있다. Activity처럼 초기화되고 메모리에서 삭제될 수 있으며 존ㅈㅐ하는 동안 화면에 표시되었다 사라지고 다시 표시될 수 있다. 프래그먼트 생명주기는 5가지 상태를 가진다.

  • INITIALIZED : 프래그먼트의 새 인스턴스가 인스턴스화되었다.
  • CREATED : 첫 번째 프래그먼트 생명주기 메서드가 호출된다. 이 상태에서 프래그먼트와 연결된 뷰도 만들어진다.
  • STARTED : 프래그먼트가 화면에 표시되지만 포커스가 없으므로 사용자 입력에 응답할 수 없다.
  • RESUMED : 프래그먼트가 표시되고 포커스가 있다.
  • DESTROYED : 프래그먼트 객체의 인스턴스화가 취소되었다.

Activity처럼 프래그먼트도 생명주기 이벤트에 응답하기 위해 재정의할 수 있는 여러 메서드를 제공한다.

  • onCreate() : 프래그먼트가 인스턴스화되었고 CREATED 상태이다. 단, 아직 상응하는 뷰가 만들어지지 않은 상태
  • onCreateView() : 레이아웃을 확장. 프래그먼트가 CREATED 상태로 전환
  • onViewCreated() : 뷰가 만들어진 후 호출됨. 일반적으로 findViewById()를 호출하여 특정 뷰를 속성에 바인딩
  • onStart() : 프래그먼트가 STARTED 상태로 전환
  • onResume() : 프래그먼트가 RESUMED 상태로 전환되었고 이제 포커스를 보유 (사용자 입력에 응답 가능)
  • onPause() : 프래그먼트가 STARTED 상태로 다시 전환. UI가 사용자에게 표시됨
  • onStop() : 프래그먼트가 CREATED 상태로 다시 전환. 객체가 인스턴스화되었지만 더 이상 화면에 표시되지 않음
  • onDestroyView() : 프래그먼트가 DESTROYED 상태로 전환되기 직전에 호출됨. 뷰는 메모리에서 이미 삭제되었지만 프래그먼트 객체는 존재
  • onDestroy() : 프래그먼트가 DESTROYED 상태로 전환

Fragment LifeCycle

Activity와의 차이점은 onCreate() 메서드에서 확인할 수 있다.

  • Activity에서의 onCreate()
    레이아웃을 확장하고 뷰를 바인딩한다.

  • Fragment에서의 onCreate()
    뷰가 만들어지기 전에 호출되기 때문에 레이아웃 확장X. onCreateView()에서 확장하고 onViewCreate() 메서드가 호출되고 해당 메서드에서 특정 뷰에 바인딩

0개의 댓글