(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을 따릅니다
궁금하신 점이나 더 좋은 의견이 있으시면 댓글 부탁드립니다 감사합니다 😊