코딩하는 일용직 노동자

Koin sharedViewModel deprecated. 이제부터는 activityViewModel을 사용하세요. 본문

안드로이드

Koin sharedViewModel deprecated. 이제부터는 activityViewModel을 사용하세요.

bacass 2023. 5. 10. 10:03
안드로이드 의존성주입에 Koin을 사용할때 Activity 와 그 아래 속한 하나 이상의 Fragment 에서
같은 ViewModel 을 사용할 필요가 있는 경우가 있습니다.

기존에는 by sharedViewModel() 을 이용하면 됐는데 이것이 deprecated 되었습니다.

이제는 by activityViewModel() 을 이용하도록 변경되었습니다.
 
val weatherAppModule = module {

    // WeatherViewModel declaration for Weather View components
    viewModel { WeatherViewModel(get(), get()) }
}



class WeatherActivity : AppCompatActivity() {

    /*
     * Declare WeatherViewModel with Koin and allow constructor dependency injection
     */
    private val weatherViewModel by viewModel<WeatherViewModel>()
}

class WeatherHeaderFragment : Fragment() {

    /*
     * Declare shared WeatherViewModel with WeatherActivity
     */
    private val weatherViewModel by activityViewModel<WeatherViewModel>()
}

class WeatherListFragment : Fragment() {

    /*
     * Declare shared WeatherViewModel with WeatherActivity
     */
    private val weatherViewModel by activityViewModel<WeatherViewModel>()
}