Было бы немного сложно дать четкий ответ, не увидев немного кода.Мое первое предположение могло бы состоять в том, что вы могли бы охватить ViewModel
своими Activity
, а не самими Fragment
.
//inside of fragment onCreate()
//scoped to fragment
viewModel = ViewModelProviders.of(this).get(SharedViewModel::class.java)
//scoped to activity
viewModel = ViewModelProviders.of(requireActivity()).get(SharedViewModel::class.java)
Если это так, если вы посмотрите на диаграмму для области действия ViewModel
.Тогда причина, по которой onCleared()
никогда не вызывается, заключается в том, что ваш Activity
технически никогда не был уничтожен, поскольку именно он удерживает ваше приложение на переднем плане.
Если это не правильное решение вашей проблемы, то я думаю, что документы по ViewModel
могут бытьхорошее место, чтобы начать искать правильный ответ.Удачного кодирования!