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 или всё таки я где то ошибаюсь?
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Фрагмент пересоздаётся и данные прилетают заново.
Читайте про жизненные циклы активити и фрагмента.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
HR Prime Москва
от 200 000 до 300 000 ₽
Experiment X Санкт-Петербург
от 160 000 ₽
26 окт. 2020, в 01:56
3500 руб./за проект
25 окт. 2020, в 23:21
5000 руб./за проект
25 окт. 2020, в 21:47
1500 руб./за проект