VictorPower
@VictorPower

Как использовать один экземпляр ViewModel во всех Activity?

Ситуация такова: есть одна ViewModel, которую я использую в своих активити и фрагментах. С помощью ViewModel провожу различные манипуляции с БД(Room) с помощью корутин(viewModelScope). Ранее столкнулся с проблемой во фрагментах, когда при нажатии на что-либо выполнялся какой-нибудь долгий Job в модели и если закрыть фрагмент, то Job прекращался досрочно. Потом мне подсказали, что во фрагменте модель нужно использовать не так
viewModel = ViewModelProvider(this).get(MainViewModel::class.java)

а вот так
viewModel = ViewModelProvider(requireActivity()).get(MainViewModel::class.java)

Это привязывает экземпляр модели не к фрагменту, а к активити(к какому именно - без понятия). Но в конкретном случае мне помогло.
Также мне посоветовали создать собственный CorutineScope, чтобы не зависел от модели и не убивался с ней, но тогда ведь теряется немного смысл модели.
Так вот, можно ли создать экзмепляр модели, который будет существовать до конца жизненного цикла главного активити и не будет убиваться при завершении вызывающего активити/фрагмента?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы