MutableLiveData сохраняет старое значение, даже когда активность наблюдателя уничтожается

У меня есть активность, которая наблюдает за живыми данными из репозитория. Теперь, когда действие уничтожается, а затем создается снова, я все равно получаю старое значение из репозитория, если я не получу новое вручную.

Почему изменяемые данные сохраняют свое старое значение даже после уничтожения активности наблюдателя?


person Neelabh Anand    schedule 17.09.2019    source источник
comment
Вы используете Dagger или Koin для внедрения ViewModel в активность? Или вы настраиваете ViewModelFactory?   -  person Miller Go Dev    schedule 18.09.2019
comment
Я использую viewmodelproviders   -  person Neelabh Anand    schedule 19.09.2019
comment
Пожалуйста, покажите код в своей деятельности и в репозитории, где вы получаете живые данные   -  person Miller Go Dev    schedule 20.09.2019
comment
Я инициализировал переменные MutableLiveData перед созданием модели представления. Теперь я инициализирую переменные в конструкторе модели представления, и проблема решена.   -  person Neelabh Anand    schedule 24.09.2019


Ответы (1)


вы можете сократить время жизни вашей ViewModel, в этом случае вновь созданная ViewModel не будет сохранять предыдущие данные.

Кроме того, вы можете вручную вызвать внутри своей деятельности

override fun onDestroy(){
    super.onDestroy()
    viewModel.clear()
}

модель внутреннего вида:

fun clear(){ myLiveData.value = defaultValue /*or null*/ }

или измените MutableLiveData с помощью LiveEvent
https://proandroiddev.com/livedata-with-single-events-2395dea972a8

person Lukas    schedule 17.09.2019
comment
Да, в настоящее время я очищаю модель просмотра, как вы предложили. Но я думаю, что живые данные должны очиститься, когда активность будет уничтожена. Возможно, должен быть правильный способ сделать это. - person Neelabh Anand; 19.09.2019