Мы пытаемся показать экран загрузки, выполнить некоторые дорогостоящие операции (представленные в спящем режиме) и после завершения операции отобразить сообщение.
ожидаемое поведение:
ШАГ 1: видимость rl_loading (RelativeLayout) установлена на видимость
ШАГ 2: приложение спит в течение 2 секунд
ШАГ 3: отображается сообщение
что на самом деле происходит:
ШАГ 2: приложение спит в течение 2 секунд
ШАГ 1 + 3: изменения видимости и сообщение отображаются одновременно
Может ли кто-нибудь объяснить, почему это происходит и что нужно изменить для достижения ожидаемого поведения?
mainIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rl_loading.setVisibility(View.VISIBLE); //STEP 1
try {
Thread.sleep(2000); //STEP 2
} catch (InterruptedException e) {
e.printStackTrace();
}
msg("message"); //STEP 3
}
});