Подписываюсь на LiveData которая находится во ViewModel во фрагменте
Вот так получаю
@Override
public void onCreate(@Nullable final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.offline_fragment);
mModel = ViewModelProviders.of(this, mFactory).get(OfflineFragViewModel.class);
observeLive();
mModel.getData("");
}
Вот подписываюсь
private void observeLive()
{
mModel.getLoadingStatusLive().observe(this, iLoadingStatus -> Log.e("TAG", iLoadingStatus.name()));
}
Метод getData() во ViewModel
public void getData(String i)
{
mLoadingStatusLive.setValue(LoadingStatus.LOADING);
Offline offline = mRepo.getActivePrnBy(i);
if (offline.isErrorOccur())
{
mLoadingStatusLive.setValue(LoadingStatus.ERROR);
}
}
В логе я получаю только ERROR
Хотя должен получить LOADING и ERROR
Если я делаю запрос данных с задержкой вот так
@Override
public void onCreate(@Nullable final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.offline_fragment);
mModel = ViewModelProviders.of(this, mFactory).get(OfflineFragViewModel.class);
observeLive();
Observable.just("").delay(1500, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).doOnNext(i -> mModel.getData("")).subscribe();
}
То все приходит как нужно
Похоже на то , как будто getData() постит все что нужно и только потом происходит подписка и естественно LiveData возвращает последний обьект который получила
Но почему это вдруг так? Если в коде явно подписываюсь я раньше , чем происходит запрос на данные...
Что делаю не так?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости