프래그먼트는 Activity와 마찬가지로 생명주기가 있다. Activity처럼 초기화되고 메모리에서 삭제될 수 있으며 존ㅈㅐ하는 동안 화면에 표시되었다 사라지고 다시 표시될 수 있다. 프래그먼트 생명주기는 5가지 상태를 가진다.
Activity처럼 프래그먼트도 생명주기 이벤트에 응답하기 위해 재정의할 수 있는 여러 메서드를 제공한다.
onCreate()
: 프래그먼트가 인스턴스화되었고 CREATED
상태이다. 단, 아직 상응하는 뷰가 만들어지지 않은 상태onCreateView()
: 레이아웃을 확장. 프래그먼트가 CREATED
상태로 전환onViewCreated()
: 뷰가 만들어진 후 호출됨. 일반적으로 findViewById()
를 호출하여 특정 뷰를 속성에 바인딩onStart()
: 프래그먼트가 STARTED
상태로 전환onResume()
: 프래그먼트가 RESUMED
상태로 전환되었고 이제 포커스를 보유 (사용자 입력에 응답 가능)onPause()
: 프래그먼트가 STARTED
상태로 다시 전환. UI가 사용자에게 표시됨onStop()
: 프래그먼트가 CREATED
상태로 다시 전환. 객체가 인스턴스화되었지만 더 이상 화면에 표시되지 않음onDestroyView()
: 프래그먼트가 DESTROYED
상태로 전환되기 직전에 호출됨. 뷰는 메모리에서 이미 삭제되었지만 프래그먼트 객체는 존재onDestroy()
: 프래그먼트가 DESTROYED
상태로 전환Activity와의 차이점은 onCreate()
메서드에서 확인할 수 있다.
Activity에서의 onCreate()
레이아웃을 확장하고 뷰를 바인딩한다.
Fragment에서의 onCreate()
뷰가 만들어지기 전에 호출되기 때문에 레이아웃 확장X. onCreateView()
에서 확장하고 onViewCreate()
메서드가 호출되고 해당 메서드에서 특정 뷰에 바인딩