상상하라 그리고 현실로 만들어라.

상상하는 모든 것이 미래다.

Kotlin과 Android/Android

안드로이드 프래그먼트 생명주기

월터제이(Walter J) 2020. 11. 26. 09:00

안녕하세요, 반갑습니다!

 

안드로이드는 액티비티(Activity) 로 화면을 구성하지만,

프래그먼트(Fragment)를 이용해서 다양한 화면을 하나의 액티비티로 나타낼 수 있습니다.

 

그래서 액티비티와 비슷하게 생명주기라는 것을 가지게 됩니다.

다만, 한가지 차이가 있다면 각 시점에 콜백 메서드가 호출되지 않습니다.

프래그먼트가 있는 액티비티가 전면에 있다면, 생성에 관련된 메서드가 한번에 호출되는 것이죠.

 

전체 흐름입니다.

 

액티비티와 다르게 엄청 기네요.

크게 두 부분으로 나누겠습니다.

 

생성 관련 메서드

1. onAttach()

액티비티(Activity)에서 프래그먼트 매니저를 통해 Commit 되는 순간 호출되는 메서드입니다.

단순히 var fragment = Fragment() 와 같이 생성자를 이용해 객체를 만드는 것으로는 호출되지 않습니다.

 

2. onCreate()

프래그먼트가 생성되는 시점입니다.

뷰를 제외하고 액티비티에서 전달된 값들을 받는 등 변수들을 초기화할 때 사용됩니다.

 

3. onCreateView()

이제 화면이 그려지는 시기입니다.

이 메서드에서 프래그먼트.xml 을 연결합니다.

그리고 onViewCreated() View 에 데이터를 Set 할 수 있습니다.

 

4. onStart()

화면에서 사라졌다가 다시 나타날때 이 메서드가 호출됩니다.

주로 화면에 보여줄 값들을 초기화할때 사용합니다.

 

5. onResume()

액티비티의 onStart() 와 같습니다.

조금 다른 점이 있다면, 위의 onStart() 가 호출되지 않고 즉시 이 메서드가 호출됩니다.

 

소멸 관련 메서드

1. onPause()

프래그먼트가 화면에서 사라지기 시작하면 호출됩니다.

'일시정지' 의 상태라고 생각하시면 될 듯 합니다.

 

2. onStop()

onPause() 가 일부분이라도 사라지게 되면 호출되는 것에 반해, 완전히 사라지게 되면 호출되는 메서드입니다.

'일시정지' 에서 완전한 '정지' 로 생각하시면 될 것 같습니다.

 

3. onDestroyView()

이 메서드가 호출되면 onCreateView() 에서 생성한 뷰(View)가 모두 사라집니다.

뷰(View) 를 해제하게 되는 시점입니다.

 

4. onDestroy()

액티비티에서는 앱이 종료되는 등 완전한 종료를 의미하듯이

프래그먼트에서도 프래그먼트의 완전한 소멸을 의미합니다.

프래그먼트에 연결된 모든 자원이 해제되는 것이지요.

 

5. onDetach()

액티비티와의 연결이 완전히 해제되는 시점입니다.

.. 그런데 onDestroy() 에서 소멸되는데 onDetach() 가 무슨 의미가 있는지는 모르겠습니다.

 

 

 

감사합니다.

반응형