📱 Android

[Android] viewModels vs activityViewModels

콩드로이드 2023. 7. 27. 21:25

(Hilt 사용)

ViewModel을 초기화할 때 viewModels()만 사용해봤었는데 activityViewModels의 존재를 알게됐어요 

두 가지의 차이점에 대해 알아봅시다! 🔍

왜 이렇게 처음보는게 늘 많은지 T_T 멀고도 험한...


viewModels()

해당 ViewModel을 초기화하는 Component의 LifeCycle을 따름 

 

activityViewModels()

@MainThread
public inline fun <reified VM : ViewModel> Fragment.activityViewModels(
    noinline extrasProducer: (() -> CreationExtras)? = null,
    noinline factoryProducer: (() -> Factory)? = null
): Lazy<VM> = createViewModelLazy(
    VM::class, { requireActivity().viewModelStore },
    { extrasProducer?.invoke() ?: requireActivity().defaultViewModelCreationExtras },
    factoryProducer ?: { requireActivity().defaultViewModelProviderFactory }

)

 

activityViewModels는 처음 들어봐서 눌러보니 원형이 저렇더라구요

소스에 보면 requireActiivty()가 나와있듯이

fragment에서만 사용이 가능하고 해당 Fragment의 root Activity의 LifeCycle을 따릅니다  

 


 

궁금하신 점이나 더 좋은 의견이 있으시면 댓글 부탁드립니다 감사합니다 😊