프래그먼트는 액티비티를 본따 만든만들었고 독립적으로 관리된다. 액티비티와 동일하게 화면의 상태를 관리할 수 있도록 해주는 수명주기를 가지고 있다. 그러나 액티비티에 올려서 사용되므로 액티비티의 수명주기에 종속된다. 그러나 프래그먼트만 가지는 독립적인 상태정보들이 추가되었다.

아래 그림은 프래그먼트의 상태에 따른 수명주기 메소드의 호출 순서를 보여준다.

1


<화면에 보이기 전에 호출되는 메소드\>

 

1. onAttach(Activity)

프래그먼트가 액티비티와 연결될 때 호출된다. 파라미터로 전달된 Activity는 프래그먼트가 올라갈 액티비티이므로 액티비티와 관련된 설정들은 이 메소드 내에서 처리하면 된다.

 

2. onCreate(Bundle)

프래그먼트에 필요한 것들을 초기화한다. 이 단계에서는 액티비티 역시 초기화 되고있는 단계이기 때문에 액티비티의 컨트롤, 뷰 등을 참조하면 안된다.

 

3. onCreateView(LayoutInflater, ViewGroup, Bundle)

프래그먼트의 UI를 구성하고 뷰 객체로 만들어 리턴한다. 뷰 객체로 만드는 과정이 진행되기 때문에 이 메소드 안에서 레이아웃 인플레이션 코드를 작성하면 된다.

 

4. onActivityCreated(Bundle)

프래그먼트가 올라간 액티비티의 onCreate() 메소드가 완료되고 프래그먼트 객체가 메모리에 생성되는 시점에 호출된다. 프래그먼트에 필요한 것들을 초기화하는데, onCreate() 콜백 메소드와 다른점은 이 단계는 액티비티의 초기화가 끝난 단계라는 것이다. 따라서 액티비티의 요소들을 참조할 수 있다.

 

5. onStart()

프래그먼트가 사용자에게 보여지기 직전에 호출된다.

 

6. onResume()

프래그먼트가 사용자에게 보여지고 포커스를 받아 상호작용을 하게 되었을 때 호출된다.


<화면에서 사라질 때 호출되는 메소드\>

 

1. onPause()

프래그먼트가 포커스를 잃고 사용자와 상호작용을 중지할 때 호출된다.

 

2. onStop()

프래그먼트와 연결된 액티비티의 onStop() 메소드가 호출되어 화면에서 보이지 않게되고 프래그먼트의 기능이 중지된다.

 

3. onDestroyView()

프래그먼트의 뷰 구성이 해제될 때 호출된다.

 

4. onDestroy()

프래그먼트가 완전히 해제된다.

 

5. onDetach()

프래그먼트가 액티비티와의 연결을 끊기 직전에 호출된다.

+ Recent posts