fragment 역시 activity처럼 생명 주기를 가진다. 프래그먼트가 있는 activity의 생명주기는 해당 fragment의 생명주기에 영향을 끼친다. 예를 들어 activity가 onPause를 호출하면 activity 내부의 fragment도 onPause를 호출하게 된다. 다만 fragment는 acitivity와 다른, fragment의 고유한 상호작용을 처리하기 위한 콜백 메서드가 더 존재한다.
-
onAttach()
- 프래그먼트와 액티비티에 연결되어 있을 때 호출된다. 프래그먼트가 액티비티로 전달된다.
-
onCreateView()
- 프래그먼트가 스스로의 인터페이스를 최초로 그릴 때 호출되며 view 객체를 반환한다.
-
onActivityCreated()
- 액티비티가 완전히 생성되는지 확신시키는 용도로 사용되는 메서드이다.
-
onCreate()
- 프래그먼트가 생성될 때 호출된다. 프래그먼트가 일시정지 혹은 중단될 경우 유지해야 할 것을 여기서 미리 초기화해주어야 한다.
-
onStart()
- 이 메서드가 호출된 이후부터 사용자가 해당 프래그먼트를 마주하고, UI를 관리하는 코드가 초기화된 후 onResume() 메서드를 호출한다.
-
onResume()
- 프래그먼트가 실행중인 액티비티에 표시되며, User와 상호작용할 때 호출된다. 프이 상황을 foreground에 액티비티가 존재한다고 표현한다. 즉 액티비티가 "실행 중"인 상태라고 할 수 있다. 이 액티비티를 방해하는 이벤트가 발생하면 onPause() 메서드가 호출된다. 실행 중인 액티비티 내에서 다양한 상호작용이 이루어진다.
-
onPause()
- User가 프래그먼트를 이탈하면 실행된다. 이탈 후 복귀하지 않고 프로그램이 종료될 수 있으므로 이 부분에선 사용자 세션을 넘어서 지속되어야 하는 변경사항을 저장해 둔다.
-
onStop()
- 해당 프래그먼트가 화면에서 보이지 않을 때 , 부모 액티비티 및 프래그먼트가 중단될 때, 현재 상태가 저장될 때 등의 상황에서 호출된다. 메모리가 부족할 경우 호출되지 않을 수 있다. 액티비티와 마찬가지로 프래그먼트가 화면에 보이지 않을 때 필요없는 기능을 이쪽에서 모두 정지시킬 수 있다.
-
onDestroyView()
- 프래그먼트와 연결된 View Layer가 소멸하는 동안 호출된다.
-
onDestory()
- 프래그먼트가 멸하기 직전에 호출된다. 기기회전, 멀티윈도우 등으로 시스템이 일시적으로 사라지는 경우에도 호출된다는 특징을 갖는다.
-
onDetach()
- 프래그먼트와 액티비티의 연결이 끊어질 때 호출된다.
-
액티비티에 프래그먼트의 생명주기에서의 차이?
- 액티비티는 정지되면 시스템에 관리하는 액티비티 백 스택에 저장되지만, 프래그먼트는 이를 제거하는 트랜잭션에서 addToBackStack()을 호출하여 인스턴스를 저장하라고 명시적으로 요구해야만 액티비티에서 관리하는 백 스택으로 저장된다.