Fragment에서 LiveData observe를 사용하면서 아래처럼 LifecycleOwner를 사용하게 되었는데,
lifecycleOwner와 viewLifecycleOwner의 차이가 무엇인지에 대해 알아보고자 합니다
LifecycleOwner
- 프래그먼트 자체의 생명주기를 갖는 class
- fragment가 추가되고, 소멸될때까지의 lifecycle
viewLifecycleOwner
- 프래그먼트 뷰의 생명주기를 갖는 class
- onCreateView~onDestroyView
viewLifecycleOwner가 권장되는 이유?
Fragment의 lifecycle(앞서 언급했던 lifecycleOwner)는 Fragment View의 lifecycle보다 더 긴 것에 주목해야합니다
만약, view는 없지만 fragment 자체가 소멸되지 않은 경우에, liveData를 observe하게되면 메모리 누수가 발생합니다
(onDestroyView가 호출되고, getView를 하게되면 null을 반환합니다 (뷰가 사라졌기 때문에) -> IllegalStateException 에러가 발생하게 됩니다)
그러므로, fragment에서 liveData observe시 메모리 누수 발생을 방지하기 위해서 viewLifecycleOwner의 사용이 권장됩니다