Как ViewModel доставляется в нужное место с помощью Koin

«Как ViewModel доставляется в нужное место с помощью Koin» — вопрос из категории DI, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ViewModel доставляется через Koin с помощью viewModel или viewModelOf функций в модуле. Koin автоматически связывает жизненный цикл ViewModel с активити/фрагментом.

Пример модуля:

val appModule = module {
    viewModel { MainViewModel(get()) } // get() внедряет зависимости
}

Использование во фрагменте:

private val viewModel: MainViewModel by viewModel()

Ключевые моменты:

  • Koin автоматически создает ViewModelProvider.Factory
  • ViewModel сохраняется при повороте экрана
  • Зависимости внедряются через конструктор
  • Можно использовать параметры через parametersOf()