Пожалуйста, посмотрите на этот простой код:
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-секундное отставание без видимого индикатора занятости
- Список обновляется после задержки
Я не могу понять причину задержки в этом случае.Все должно быть обновлено с видимым индикатором занятости.У тебя есть идеи?