Я использую Koin для DI, но я пытаюсь устранить зависимости от структуры DI, поэтому мой вопрос касается компонентов архитектуры Android в целом.
Можно предоставить экземпляр ViewModel делегатом свойства во фрагменте, но это вызывает связь между фрагментом и структурой DI. Итак, я нашел решение: передать ViewModel во фрагмент в конструкторе. Текущая реализация с Koin выглядит так:
val di = module {
fragment {
MyFragment(
get<MyViewModel>(),
)
}
viewModel {
MyViewModel(
get<MyDependency>(),
)
}
//...
}
И это работает. Но есть загвоздка. Поскольку ViewModel создается перед фрагментом, он не следует жизненному циклу фрагмента, и onCleared()
не вызывается при уничтожении фрагмента.
Так что мне интересно, как я могу заставить его снова работать?