RxJava zip 3 наблюдаемые - onSubscribe lag - PullRequest
0 голосов
/ 27 марта 2019

Пожалуйста, посмотрите на этот простой код:

private void refreshData(String endpoint)
    {
        KProgressHUD busy = Utils.showBusyIndicator(MainActivity.this);
        MCityEndpoint mcityService = ServiceFactory.createRetrofitService(MCityEndpoint.class, Configuration.getApiUrl());

        Disposable disposable = Observable.zip
                (
                        mcityService.getMcityDictionaries(selectedCity.id),
                        mcityService.getEvents(selectedCity.id, endpoint),
                        mcityService.getUserDetails(selectedCity.id),

                        (dictionaries,events, userInfo) ->
                        {
                            processData(dictionaries, events, userInfo);

                            return  events.events;
                        }

                )
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(result ->
                {
                    if(mFragment instanceof ListFragment)
                    {
                        ((ListFragment) mFragment).refreshData(result);
                    }

                    updateUserDetails();
                    busy.dismiss();

                    Log.d(Configuration.tag,"Refresh data complete");

                }, throwable ->
                {
                    Log.d(Configuration.tag,throwable.toString());
                    busy.dismiss();
                    this.logout(true);

                });


        mCompositeDisposable.add(disposable);
    }

Я хочу вызвать 3 наблюдаемые, обработать их значения и, наконец, загрузить данные в список.Это работает, но я получаю 1 секунду отставания.Результат:

  • Индикатор занятости отображается
  • Индикатор занятости скрывается
  • 1-секундное отставание без видимого индикатора занятости
  • Список обновляется после задержки

Я не могу понять причину задержки в этом случае.Все должно быть обновлено с видимым индикатором занятости.У тебя есть идеи?

...