본문 바로가기

Android/Basic

Fragment Lifecycle 예제

 

Fragment 소스파일은 진짜 별거 없어서 위의 Github링크로 대체한다.

생성-정지-파괴 순서로 모두 진행해보았다.

 

앱을 실행하자마자 위의 로그 스크린샷에서 보는 것 처럼, 액티비티의 onCreate()가 호출되었고, 이어서 프래그먼트의 onAttach()→onCreate()→onCreatView()→onViewCreate()→onViewStateRestore()→onStart()가 차례로 진행된다. 그런데 여기서 눈여겨 볼 점은 바로, 프래그먼트의 onStart() 호출 이후, 액티비티의 onStart()와 onResume()이 호출되며, 그 이후에 다시 프래그먼트의 onResume()이 호출된다는 것이다.

액티비티를 생성한 다음 프래그먼트를 진행하고, 액티비티를 Forground로 보낸 다음(실행 상태) 프래그먼트를 포그라운드로 보낸 것이다.

 

이후, 어플리케이션을 백그라운드로 보내보았다.

예상과 달리 프래그먼트의 onPause()가 먼저 호출되었고 액티비티의 onPause()가 호출되었다. 그리고 프래그먼트의 onStop()이 먼저 호출된 후 액티비티의 onStop이 호출되었으며, 이어서 프래그먼트의 onDestroyView() → onDestroy() → onDetach() 순서로 호출되었고, 이후 액티비티의 onDestroy()가 호출된다.

 

취소 버튼을 눌렀을때에는 프래그먼트 onPause() -> 액티비티 onPause() -> 프래그먼트 onStop() -> 액티비티 onStop() 순서로 호출되었다.

그리고 다시 앱을 화면에 띄우면 액티비티 onStart() -> 액티비티 onResume() -> 프래그먼트 onResume() 순서로 호출되었다. 오버뷰 버튼을 눌렀을때 역시 마찬가지였다.

 

이렇게 직접 눈으로 로그를 표시하며 흐름을 파악하니, 어떤 순서로 액티비티와 프래그먼트가 실행되는 것인지 감이 온다. 실전에서 적용시킬 때 유용할 것이라고 생각한다.


Uploaded by

N2T