У меня есть метод для примера, мне нужно во время получения запроса вывести progressDialog, в onCompleted() - dismiss в onNext show, но по итогу на экран progressDialog не выводится. В чем может быть причина, скорее всего я чего-то недопонимаю?
public void newsGetRxEnd(RecyclerView mRecyclerView, Context context) {
progressDialog = new ProgressDialog(context, R.style.MyTheme);
progressDialog.setCancelable(false);
progressDialog.setProgressStyle(android.R.style.Widget_ProgressBar_Small);
Link link = retrofit.create(Link.class);
Observable<List<News>> observable = link.endNews(db.getMin("news", "idNews"));
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<News>>() {
@Override
public void onCompleted() {
Log.d(LOG_TAG, "onCompleted");
progressDialog.dismiss();
}
@Override
public void onError(Throwable e) {
Log.d(LOG_TAG, "onError " + e);
}
@Override
public void onNext(List<News> newses) {
Log.d(LOG_TAG, "onNext " + newses.size());
for (int i = 0; i < newses.size(); i++) {
db.addRec(newses.get(i).getTitle(), newses.get(i).getId(), newses.get(i).getSummary(),
String.valueOf(newses.get(i).getNewsDate()));
Log.d(LOG_TAG, "db.getNewsList().size(): " + db.getNewsList().size());
}
mRecyclerView.getAdapter().notifyDataSetChanged();
progressDialog.show();
}
});
}
Скорее всего диалог с прогрессом просто не успевает показаться.
У вас сейчас так:
onCompleted() и диалог скрывается.Т.к. скорее всего меж п3 и п4 проходит всего несколько миллисекунд то диалог просто не успевает отобразиться.
Могу предложить несколько вариантов.
ANR возникнуть.В обоих случаях вам надо обрабатывать ошибки и скрывать диалог в onError.
И надо помнить, что если вы будете запись в БД делать в фоновом потоке и перед оной показывать диалог, то обращения к нему надо делать (как и ко всему остальному UI) в основном потоке.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники