프래그먼트 생명주기 찾아보다가 onActivityCreated가 deprecated 됐고 그 대체 방법을 소개하는 (1)블로그 포스팅을 봤는데, 여기선 onActivityCreated()가 Activity의 생성이 끝나야만 처리되는 로직이 Fragment에 있을 때를 위해서라고 설명이 되어있고, onActivityCreated()를 대신해서 LifeCycleObserver를 사용해 Activity가 생성되면 Fragment의 특정 로직을 실행하면 된다고 함


근데 (2)다른 블로그 포스팅에선 onActivityCreated()를 Activity에서 Fragment 생성이 완료되면 호출되는 함수라고 설명하고 있음


(1)에선 Activity가 생성되면 onActivityCreated가 실행된다고 하고,
(2)에선 onCreate를 거쳐서 Fragment가 생성된 후에 onActivityCreated가 실행된다고 함


그래서 onActivityCreated가 Activity 생성 이후에 실행되는건지 Fragment 생성 이후에 실행되는건지 찍어보기로 함


(1)에서 소개하는 방법의 경우 @OnLifecycleEvent 어노테이션을 쓰던데 이것도 deprecated 됐길래 아래처럼 짰음 (이게 맞는 방법인지는 잘모르겠슴.. 이래저래 검색하면서 짬)

override fun onAttach(context: Context) {
    System.out.println("SearchFragment : onAttach")
    super.onAttach(context)
    activity?.lifecycle?.addObserver(lifecycleObserver)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    System.out.println("SearchFragment : onViewCreated")
    super.onViewCreated(view, savedInstanceState)
}
fun onTest(){
    System.out.println("SearchFragment : onTest")
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
    System.out.println("SearchFragment : onActivityCreated")
    super.onActivityCreated(savedInstanceState)
}

실제로 찍어본 결과는


이렇게 나왔음 onActivityCreated는 Fragment가 생성된 이후에 실행됐고, (1)에서 소개하는 방법은 Activity가 생성된 후에 Fragment를 호출하면 Activity의 생성을 바로 감지하고 onTest()가 실행됐음




위에 질문 빌드업이 너무 길었는데, 결국 궁금한 건



1. 내가 Fragment를 사용할 땐, 항상 Activity를 생성하고 그 Activity 안에서 Fragment를 생성하는 방식으로 사용했는데 이 경우엔 Activity가 이미 onCreate 되어있으니까 (1)에서 말하는 Activity의 생성이 끝나야만 처리되는 로직이 Fragment에 있을 때라는 게 어떤건지 잘 모르겠음


2. onActivityCreated의 대체 방식으로 소개한 LifeCycleObserver 방식이 실제로 찍어보면 onActivityCreated보다 먼저 실행되는데 이건 내가 잘못짠건지 이해를 잘못한건지 모르겠음