Как сохранить сущность которая привязана к объекту который жив в Koin

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

Ответ

Для сохранения сущности, привязанной к объекту в Koin, используйте get() или by inject() для получения зависимости. Если объект должен сохраняться между экранами, объявите его как single или scoped в модуле Koin.

Пример с scoped для ViewModel:

// Модуль Koin
val appModule = module {
    scope<MyActivity> {
        scoped { MyRepository() }
        viewModel { MyViewModel(get()) }
    }
}

// В Activity
class MyActivity : AppCompatActivity() {
    private val viewModel: MyViewModel by viewModel()
    // или для обычной зависимости
    private val repo: MyRepository by inject()
}

Для single (синглтон на всё приложение):

module {
    single { MyRepository() }
}