#android #android-activity #android-lifecycle #android-configchanges
#Android #android-activity #android-жизненный цикл #android-configchanges
Вопрос:
Учитывая следующую ситуацию (частично псевдокод):
- Пользователь нажимает кнопку в Activity
A
, которая, в свою очередь, выполняет этот код:
ProgressBar.setVisibility(ВИДИМЫЙ) // по умолчанию устанавливается как НЕВИДИМЫЙ в макете startActivityForResult(ActivityB)
- Пользователь поворачивает свое устройство
Возможно ли, что шаг 2 (вращающееся устройство) вызывает изменение конфигурации, которое приводит к воссозданию активности A
и, следовательно progressBar
, должно быть скрыто до B
отображения активности? Я знаю, что startActivityForResult
это асинхронный вызов, но я не уверен, как он реализован внутренне, поэтому, если изменение конфигурации в Activity A
может произойти до B
отображения Activity?
Комментарии:
1. Лично я бы попытался настроить его так, чтобы это не имело значения в любом случае. Это похоже на одну из тех вещей, которые могут отличаться в зависимости от версии Android.
2. Зачем вам использовать progressbar в A, если вы только что запустили B? Панель вообще видна? Как бы вы обновили его с B? Я не понимаю эту конструкцию.
3. @blackapps Я просто переключил две строки, чтобы сделать их более интуитивно понятными. Запуск Activity
B
занимает больше времени, чем мне бы хотелось, поэтому я показываюProgressBar
. При его реализации у меня возник вопрос, может ли изменение конфигурации скрыть действиеProgressBar
доB
отображения. Это больше связано с обучением и любопытством, чем с практической проблемой.4. @CommonsWare Практически видел, я думаю, никто не заметит разницы между восстановлением
ProgressBar
при изменении конфигурации (если это может произойти) и отказом от этого, но мне интересно, возможно ли вообще, что изменение конфигурации может произойти. Если это так, я бы реализовал несколько строк для сохранения и восстановления состояния загрузки, в противном случае я бы пропустил это 😉 Конечно, это больше связано с обучением и любопытством, поэтому постановка вопроса, скорее всего, заняла больше времени, чем его реализация 😉