Я хочу отображать диалоговое окно прогресса в моем приложении всякий раз, когда представление переработчика начинает загружать больше элементов.Проблема в том, что я не могу отобразить диалоговое окно, потому что метод уведомления ВСЕГДА выполняется (и замораживает экран) до появления экрана загрузки.Происходит, даже если метод show () для него вызывается в самой первой строке моего метода addContacts ().
Я уже пробовал:
getActivity (). RunOnUiThread ();
создание потока, его запуск, вызов метода join ()
запуск с исполнителями
public void addContactsToScreen() {
((BaseActivity) lcf.getActivity()).showProgressDialog();
try {
int currentSize = contactsLoaded.size();
int inserted;
for (inserted = 0;
inserted < DEFAULT_ITEM_INSERTION
&& inserted < lcf.getController().getContacts().size()
&& contactsLoaded.size() < lcf.getController().getContacts().size()
; inserted++) {
contactsLoaded.add(lcf.getController().getContacts().get(currentSize + inserted));
}
if (inserted > 0) {
notifyItemRangeInserted(contactsLoaded.size() - 1, inserted);
}
lcf.getContactsRecycler().getViewTreeObserver()
.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
lcf.isLoading=false;
lcf.getContactsRecycler().post(new Runnable() {
@Override
public void run() {
((BaseActivity) lcf.getActivity()).hideProgressDialog();
}
});
lcf.getContactsRecycler().getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
Это оригинальный код (без потоков или неудачных попыток).Пустота вызывается каждый раз, когда я инициализирую адаптер или представление достигает порогового предела.Он загружает список, который отображается на экране после вызова «notifyItemRangeInserted ()».Как вы можете видеть, VERY FIRST LINE пытается показать экран загрузки, но по какой-то причине в самом отладчике я нахожу с точками останова, что метод вызывает метод show, но экран загрузки никогда не появляется, заполняет список в «for»цикл, вызывает событие уведомления, экран зависает, ТОГДА экран загрузки наконец появляется, но затем сразу же вызывается метод скрытия (делает экран загрузки бесполезным)