카테고리 없음

[Android] fragment - lifecycleOwner / viewLifecycleOwner

콩드로이드 2023. 9. 17. 14:27

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의 사용이 권장됩니다