본문 바로가기

android

Fragment 생명주기

Fragment

Fragment란?
  • 조각 이란 뜻으로 액티비티 보다 더 작은 화면 단위를 정의하는데 쓰이며 프래그먼트의 집합으로 액티비티가 구성된다.
  • 높은 재사용성으로 여러 액티비티 에서 재사용 가능하다.
  • 디자인시 배치가 미리 결정되는 액티 비티에 비해 실행 도중 추가,제거,교체 가능하다.
  • 설정창에 많이 쓰이며 프래그먼트를 클릭하여 액티비티를 실행한다 따라서 하나의 프래그먼트당 하나의 기능만을 구성하는 것이 좋다
  • 프래그먼트 끼리의 직접적인 조작은 피하는 것이 좋다 프래그 먼트끼리 통신이 필요하면 액티비티를 통해 하는 것이 좋은 구조이다. 


Fragment 생명주기
  • 프래그먼트는 액티비티에 종속되어 나타나기 때문에 액티비티 없이 홀로 존재 할 수 없다.
  • 액티비티의 생명주기가 끝날 경우 프래그먼트 역시 종료 된다.
  • 액티비티와 생명주기는 거의 유사하다.
  • onCreate,onCreateView,onPause는 거의 필수적으로 구현해야 하며 나머지는 필요에 의해 구현하면 된다.
  • 다음의 순서대로 콜백이 호출된다.



void onAttach(Activity activity)
  • 액티비티에 프래그먼트가 처음 부착 될때 호출. 인수의 부착된 액티비티는 프래그먼트가 부착된 호스트 액티비티
void onCreate(Bundle savedInstanceState)
  • 프래그먼트가 생성 될 때 호출.
  • 프래그먼트에서 꼭 필요한 요소 초기화한다,초기화 할 것이 없을 경우 생략 가능
  • 이 단계는 아직 액티비티 조차도 초기화 되지 않은 상태 이므로 액티비티의 컨트롤을 안전하게 참조 할 수 없다.
  • 액티비티 초기화 시점 필요 시 onActivityCreated 사용.
  • 프래그먼트에서 메뉴 사용 시 setHasOptionMenu 등록 ->onCreateOptionMenu를 호출 할 수 있다.
void onActivityCreated 
  • 액티비티가 완전히 초기화 된고 프래그먼트의 레이아웃도 완성되었을 때 호출된다.

view onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)
  • 프래그먼트의 UI를 그릴 때 처음 호출, 자신이 xml에 생성한 view 리턴
  • UI가 없다면 null을 지정하면 된다.
  • container : 프래그먼트가 배치 될 액티비티의 부모 뷰 
  • savedInstanceState:이 콜백에서 리턴한 레이아웃이 액티비티의 container에 나타난다.

위 4가지의 콜백 실행 후 onStart,onResume가 실행 액티비티 생명주기와 같은 시점에 호출 되며 의미도 동일

액티비티 파괴 시 
  • onDestroyView,onDestroy,onDetach 콜백이 순서대로 호출 된다.