https://developer.android.com/guide/components/fragments?hl=ko
프래그먼트 | Android 개발자 | Android Developers
A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section
developer.android.com
프래그먼트는 액티비티처럼 동작하는 뷰입니다.
프래그먼트도 액티비티의 생명주기 함수인 onCrate(), onStart(), onResume(), onPause(), onStop(), onDestory()를 그대로 가지고 있으며 호출되는 시점도 액티비티와 같습니다.
프래그먼트의 생명주기는 크게 5단계로 나눌수 있습니다. 초기화, 생성, 시작, 재개, 소멸 단계로 구분할수 있습니다. 초기화 단계가 진행되면서 onAttach와 onCreate 함수가 호출됩니다.
초기화 단계는 프래그먼트의 화면을 구성할 뷰가 준비되지 않은 상태입니다. onAttach와 onCreate 함수에서는 뷰 객체를 이용하지 못하므로 뷰와 관련이 없는 프래그먼트의 초기화 로직을 수행합니다.
생성 단계는 프래그먼트의 화면을 구성할 뷰를 준비합니다. onCreateView 함수의 매개변수로 LayoutInflater 객체가 전달되므로 대부분은 onCreateView 함수에서 프래그먼틔 화면을 구성할 뷰 객체를 준비합니다.
onActivityCreated()는 액티비티에서 프래그먼트를 모두 생성하고 난 다음에 호출됩니다. onCrate() 다음에 호출됩니다. 액티비티와 프래그먼트가 연결되는 시점입니다.
onStart()는 프래그먼트가 사용자에게 보여지기 전에 호출되는 함수입니다.
onResume()은 프래그먼트가 화면에 보여지는 단계입니다.
재개 단계에서는 포커스를 가지고 사용자의 이벤트를 처리할 수 있습니다.
프래그먼트가 처음 화면에 나온다면 onAttach → onCrate() → onCreateView → onViewCreated → onStart → onResume 함수가 순서대로 호출됩니다. 이후 다른 프래그먼트로 교체될 때는 백 스택을 사용하는지에 따라 생명주기가 다르게 동작합니다. 백 스택은 프래그먼트가 화면에 보이지 않는 순간 제거하지 않고 저장했다가 다시 이용할 수 있는 기능을 말합니다. 백 스택을 이용하면 사용자가 기기의 뒤로가기 버튼을 누를 때 이전 프래그먼트로 화면을 전환할 수 있습니다. 백 스택을 사용하지 않으면 프래그먼트가 교체될 때 기존의 프래그먼트는 onDetory까지 호출되어 제거 됩니다.
onPause()는 사용자가 프래그먼트를 떠난다는 것을 나타내는 첫 번째 신호입니다. 사용자가 돌아오지 않을 수도 있으므로 여기에서 현재 사용자 세션을 넘어서 지속되어야 하는 변경 사항을 저장합니다.
onStop()는 프래그먼트는 더이상 보여지지 않게되며, 프래그먼트 기능을 중지합니다.
onDestoryView()는 프래그먼트에 view들을 제거합니다.
onDestory()는 프래그먼트를 제거하기 직전입니다.
onDetach()는 프래그먼트를 제거하고 액티비티와의 연결도 해체합니다.
백 스택을 사용하면 프래그먼트가 제거되지 않고 onDestoryView 함수까지만 호출됩니다. onPause → onStop → onDestoryView 함수가 자동으로 호출됩니다. onDestoryView까지 호출된 프래그먼트가 다시 준비되어 화면에 출력된다면 onCreateView → onViewCreated(onActivityCreated) → onStart → onReesume 함수가 차례로 호출됩니다.
참고블로그:
https://limkydev.tistory.com/41
[Android] Fragment 생명주기
실무에서 안드로이드앱을 만들 때 내가 만든 앱은 전부다 하나의 액티비티에 다수의 프래그먼트 물리는 구조를 많이 선택했다. 처음에는 다이렉트로 Context를 프래그먼트에서 불러오지 못하고,
limkydev.tistory.com
참고교재:
깡샘의 안드로이드
'Android' 카테고리의 다른 글
Android - Palette (0) | 2022.11.11 |
---|---|
Android - Manifest (0) | 2022.11.02 |
[Android] 프로젝트 수준의 build.gradle 오류 (0) | 2022.08.17 |
[Android] ViewPager2 중첩 문제 (0) | 2022.08.12 |
GIF파일 적용 ImageView 적용하기 (0) | 2022.07.22 |