프래그먼트는 액티비티를 본따 만든만들었고 독립적으로 관리된다. 액티비티와 동일하게 화면의 상태를 관리할 수 있도록 해주는 수명주기를 가지고 있다. 그러나 액티비티에 올려서 사용되므로 액티비티의 수명주기에 종속된다. 그러나 프래그먼트만 가지는 독립적인 상태정보들이 추가되었다.
아래 그림은 프래그먼트의 상태에 따른 수명주기 메소드의 호출 순서를 보여준다.
<화면에 보이기 전에 호출되는 메소드\>
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()
프래그먼트가 액티비티와의 연결을 끊기 직전에 호출된다.
'안드로이드' 카테고리의 다른 글
(안드로이드) 33 - 탭(Tab) (0) | 2020.05.18 |
---|---|
(안드로이드) 32 - 액션바(ActionBar) (0) | 2020.05.18 |
(안드로이드) 30 - 프래그먼트(Fragment) (0) | 2020.05.18 |
(안드로이드) 29 - 페이지 슬라이딩(Page Sliding) (0) | 2020.05.18 |
(안드로이드) 28 - 애니메이션(Animation) (0) | 2020.05.18 |