본문 바로가기
My Image
프로그래밍/Android

[Android] Fragment 생명주기

by Lim-Ky 2017. 6. 18.
반응형

실무에서 안드로이드앱을 만들 때 내가 만든 앱은 전부다 하나의 액티비티에 다수의 프래그먼트 물리는 구조를 많이 선택했다.


처음에는 다이렉트로 Context를 프래그먼트에서 불러오지 못하고, 일반적으로 액티비티에서 사용하는 문법과 살짝 살짝 다르기 때문에


복잡했지만, 처음부터 프래그먼트를 이용해서 개발해서 그런지 익숙해져버렸다....


오늘은 프래그먼트의 생명주기를 알아보도록 하겠다.





 

제일 정확한 프래그먼트 생명주기 사진이다.



1. onAttach()

 프래그먼트가 액티비티에 붙을 때 호출된다. 하지만 아직 완벽하게 생성된 것은 아님!!

 (이말을 잘 생각해보면, 프래그먼트는 액티비티 없인 독단적으로 존재할 수없는 녀석이란 소리다.)


2. onCreate()

본격적으로 프래그먼트가 액티비티에 호출을 받아 생성되는 시점이다. 

액티비티의 onCreate()에선 view나 ui관련 작업을 할 수 있으나, 프래그먼트의 onCreate()에서는 할 수 없다.

대신 다음에 호출될 onCreateView()에서 ui관련 작업을 할 수있으니 너무 걱정 하지 말길...


3. onCreateView()

프래그먼트에 속한 각종 view나 viewGroup에 대한 ui 바인딩 작업을 할 수있다. 

(Layout을 inflater하여 View작업을 한다.)


4. onActivityCreated()

액티비티에서 프래그먼트를 모두 생성하고 난 다음에 호출된다. 즉 액티비티에서 onCreate()다음에 호출되는 녀석이다. 

액티비티와 프래그먼트가 드디어 연결되는 시점이다.


5. onStart()

프래그먼트가 사용자에게 보여지기 전에 호출되는 함수 - 액티비티와 같음


6. onResume()

프래그먼트가 비로소 화면에 보여지는 단계, 사용자에게 포커스를 잡은 상태, 사용자와의 상호작용이 가능!!




--------- 다른 프래그먼트가 치고 들어오는 경우 (add되는 경우) --------- 




7. onPause()

프래그먼트는 사용자와의 상호작용을 중지한다. 

다시 돌아온다는 보장이 없으므로, 중요한 정보는 저장해 둔다.


8. onStop()

프래그먼트는 더이상 보여지지 않게되며,  프래그먼트 기능 중지.


9. onDestroyView()

프래그먼트에 view들을 제거한다. 

backstack을 사용했다면, 다시 해당 프래그먼트로 돌아 올때 onCreateVeiw()가 호출된다.


10. onDestroy()

프래그먼트를 제거하기 직전이다.


11.onDetach()

프래그먼트 비로소 제거하고 액티비티와의 연결도 해체시킨다.










반응형

댓글