hong0708
Fragment lifecycle 본문
Fragment의 생명주기

1. onAttach()
Fragment가 Activity에 붙을 때 호출됩니다. Fragment 가 FragmentManager에 추가되며 Fragment의 생명주기를 관리합니다.
2. onCreate()
프래그먼트가 생성될 때 호출됩니다. 프래그먼트가 일시정지되거나 중단되었다가 재개되었을 때 유지하고자 하는 것을 초기화해야 합니다. Bunndlle로 데이터가 넘어오고 Fragment만 Created 된 상황입니다.
- UI 초기화는 불가능
3. onCreateView()
Fragment가 View를 그립니다. 즉, Layout을 Inflate하는 작업을 수행하는 부분으로 View를 반환합니다.
- savedInstanceState로 이전 상태에 대한 데이터 제공을 받습니다.
- View와 관련된 객체를 초기화 할 수 있습니다.
4. onViewCreated()
onCreateView()를 통해 반환된 View 객체는 onViewCreated()의 파라미터로 전달됩니다. 즉 View의 초기값 설정이 가능하고 LiveData 옵저빙, RecyclerView, ViewPager2에 사용될 Adapter 세팅을 해주는 것이 적합 합니다.
- 이 때 Lifecycle이 INITIALIZED 상태로 업데이트가 됩니다.
5. onViewStateRestored()
저장해둔 모든 state 값이 Fragment의 View의 계층 구조에 복원되었을 때 호출됩니다. ex) 체크박스 위젯이 현재 체크되어있는가
View Lifecycle Owner는 이때 INITIALIZED상태에서 CREATED 상태로 변경됨을 알립니다.
6. onStart()
이때 부터 Fragment가 사용자에게 보여질 수 있습니다. Activity의 onStart()와 유사하며 childFragmentManager을 통해 FragmentTransaction을 사용할 수 있습니다. View Lifecycle Owner는 이때 CREATED 상태에서 STARTED로 상태 변경됨을 알립니다.
7. onResume()
사용자와 Fragment가 상호작용 할 수 있는 상태입니다. 이때, 모든 Animator, Transition은 종료되어 있습니다.
8. onPause()
Fragment가 떠나는 중이지만 아직 visible 입니다. 이때 View의 lifecycle은 PAUSED가 아닌 STARTED입니다.
9. onStop()
Fragment가 더 이상 화면에 보여지지 않는 Invisible 상태입니다. 이때, 실행할 필요가 없는 기능들을 정지할 수 있고 또한, 보이지 않는 동안에 필요없는 리소스들을 해제 및 조정하여 최적화를 진행 해야합니다. (ex. 디비 저장)
- API 28버전을 기점으로 onSaveInstanceState() 함수와 onStop() 함수 호출 순서가 달라짐, 따라서 onStop()이 FragmentTransaction을 안전하게 수행하는 마지막 지점입니다.
10. onDestoryView()
모든 exit animation, transaction이 완료되고 Fragment가 화면으로부터 벗어났을 경우 호출됩니다. View Lifecycle Owner는 이때 CREATED 상태에서 DESTROYED상태로 변경됨을 알립니다.
- 가비지 컬렉터에 의해 수거될 수 있도록 Fragment View에 대한 모든 참조가 제거되어야 합니다.
- getViewLifecycleOwnerLiveData()
11. onDestroy()
Activity 와 Fragment가 소멸되기 전에 호출됩니다. 화면모드가 바뀔 때 또한 동일합니다.(가로 세로 모드)
12. onDetach()
프래그먼트가 액티비티로부터 해제되어질 때 호출된다.
참고
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
'Android' 카테고리의 다른 글
| local.propertites에 api key 값 저장하기 (0) | 2023.11.23 |
|---|---|
| 안드로이드 라이브러리 없이 직선 그래프 만들기 (0) | 2023.11.08 |
| Activity LifeCycle (0) | 2023.09.27 |