Проблема с передачей данных в Fragment (MVVM)
Проект на MVVM.
На странице должны быть подгружены 3 списка. (Выгружаются соответственно запросами через API с помощью Retrofit). При старте страницы в методе onViewCreated вызывается метод из viewmodel, который загружает первых два списка. Третий список зависит от выбранного элемента из второго списка (на втором висит слушатель, который запускает запрос на третий список исходя из выборанного). В самой viewmodel меняется MutableLiveData, а Fragment все слушает. Все по стандарту. На каждый список свой state, в который приходит List<>, а потом присваивается в Adapter.
В нормальном режиме (обычный запуск Fragment) все работает. Как только злые тестировщики начинают играть с фоном приложения начинаются странности.
Если увести в фон приложение конкретно в момент, когда viewmodel должна изменить state, то она его не меняет. Retrofit все данные загружает (это проверенно). Метод setValue для изменения state срабатывает (в плане, что по логам до него доходит). Только иногда происходит вышеописанная ситуация. (с postValue и setValue поигрался, результата не дало)
ViewModel
retrofitService.getFirstList(iListsData = object : IListsData{
override fun onSuccess(list: SpinnerList)
serviceState.set(ServiceState.LoadFirstList(list)
}
override fun onError(error: ErrorAPI) {
posState.set(MainStates.CriticalError(error.message))
}
})
Fragment
is ServiceState.LoadFirstList -> {
binding.spinnerFirstList.apply {
adapter = SpinnerAdapter(requireContext(), state.list)
onItemSelectedListener = viewModel.listenerFirstList(state.list)
}
}
Исходя из вышесказанного есть вопрос. Как избежать подобного поведения и добиться, чтобы setValue срабатывал, независимо в каком состоянии находится приложение.
Update
Не реагирует именно Fragment. State обновляется