(1) Activity 및 FirstFragment 최초 생성 및 attach


Activity, Fragment 최초 생성의 경우 모두 같은 순서를 가짐.
(2) SecondFragment 생성

[ Add, Add(backstack) ]
기존 FirstFragment의 변화 없이 SecondFragment 생성됨

[ Replace ]
First Fragment onPause -> onStop
Second Fragment onAttach ~ onStart
First Fragment onDestoyView ~ onDetach
Second Fragment onResume

[ Replace(backstack) ]
First Fragment onPause -> onStop
Second Fragment onAttach ~ onStart
First Fragment onDestoyView
Second Fragment onResume
* 기존 replace와 달리 FirstFragment는 backstack으로 남아있으므로 view까지만 소멸됨. Fragment 자체는 소멸 안됨.
(3) Home 버튼 클릭

[ Add, Add(backstack) ]
First, Second Fragment, Activity onPause
First, Second Fragment onSaveInstanceState
First, Second Fragment, Activity onStop

[ Replace ]
Second Fragment, MainActivity onPause
Second Fragment onSaveInstanceState
Second Fragment, MainActivity onStop

[ Replace(backstack) ]
Second Fragment, MainActivity onPause
First, Second Fragment onSaveInstanceState
Second Fragment, MainActivity onStop
* FirstFragment의 경우 아직 Fragment가 소멸된 상태가 아님. 다시 View가 Create 될 수 있으므로 SaveInstanceState 메소드 수행됨
(4) 다시 앱으로 돌아옴

[ Add, Add(backstack) ]
First, Second Fragment, MainActivity onStart -> onResume

[ Replace, Replace(backstack) ]
Second Fragment, MainActivity onStart -> onResume
(5) back 버튼

[ Add ]
First, Second Fragment, MainActivity onPause -> onStop
FirstFragment, SecondFragment onDestroyView ~ onDetach
MainActivity onDestroy

[ Add(backstack) ]
Second Fragment onPause ~ onDetach
* add - backstack에 의해 기존 FirstFragment는 View가 소멸되지 않고 그대로 있었으므로 SecondFragment만 소멸

[Replace]
Second Fragment, MainActivity onPause -> onStop
SecondFragment onDestroyView ~ onDetach
MainActivity onDestroy

[Replace]
Second Fragment onPause -> onStop
First Fragment onCreateView ~ onStart
SecondFragment onDestroyView ~ onDetach
First Fragment onResume
* backstack에 의해 view만 소멸되어있는 상태였던 FirstFragment가 다시 top-level에 올라옴으로써 view 재생성됨
(6) back 버튼 한 번 더 (back stack 경우)

[ Add (backstack), Replace (backstack) ]
First Fragment, MainActivity onPause -> onStop
First Fragment onDestroyView ~ onDetach
MainActivity onDestroy
Github 소스코드 : https://github.com/HunSeongPark/Kotlin-App-Study/tree/main/fragment-lifecycle
GitHub - HunSeongPark/Kotlin-App-Study: Kotlin App 실습 관련
Kotlin App 실습 관련. Contribute to HunSeongPark/Kotlin-App-Study development by creating an account on GitHub.
github.com
'Android' 카테고리의 다른 글
[Android] Exception 종류와 내용 (2) | 2021.11.20 |
---|---|
[Android, Kotlin] 멀티 스레드 간 통신을 위한 Handler, Looper (2) | 2021.11.20 |
[Android, Kotlin] RecyclerView의 성능 개선, DiffUtil과 ListAdapter (2) | 2021.11.17 |
[Android] View와 ViewGroup의 관계 (0) | 2021.11.16 |
[Android, Kotlin] Broadcast Receiver에서의 비동기 백그라운드 작업 (0) | 2021.11.16 |