Tsudzukeru
@Tsudzukeru

Почему при изменении конфигурации экрана срабатывают слушатели LiveData во ViewModel?

Есть фрагмент, который держит ссылку на ViewModel. Внутри ViewModel есть несколько полей типа LiveData, с данными.
В OnCreateView() фрагмента есть слушатели на LiveData нашей ViewModel.
Например вот этот:
viewModel.networkState.observe(viewLifecycleOwner, Observer {
            when(it){
                NetworkState.LOADING -> activityContract.showProgressBar()
                NetworkState.LOADED -> activityContract.hideProgressBar()
                NetworkState.NO_INTERNET ->activityContract.showErrorDialog(NetworkState.NO_INTERNET.msg)
                NetworkState.ERROR -> activityContract.showErrorDialog(NetworkState.ERROR.msg)
                NetworkState.API_LIMIT_EXCEEDED -> activityContract.showErrorDialog(NetworkState.API_LIMIT_EXCEEDED.msg)
            }
        })

При перевороте экрана эти слушатели срабатывают, хотя никаких обновлений данных LiveData не было.
Я покрыл логами все методы, которые отвечают за изменение данных и не нашел ни одного, который бы отработал при перевороте. В слушатели попадают теже самые данные, которые лежали в LiveData до переворота.
Это такая особенность работы ViewModel + LiveData или всё таки я где то ошибаюсь?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Фрагмент пересоздаётся и данные прилетают заново.
Читайте про жизненные циклы активити и фрагмента.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы