안녕하세요, 반갑습니다!
안드로이드는 액티비티(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() 가 무슨 의미가 있는지는 모르겠습니다.
감사합니다.