Порядок Android Activity.startActivity () и Dialog.show () - PullRequest
2 голосов
/ 08 февраля 2011

Мне нужно показать диалоговое окно, подобное EULA, когда пользователь запускает мое приложение, но у моего приложения также есть своего рода заставка, которую необходимо отобразить перед этим диалогом. Я закодировал это так:

Activity A.onCreate(...) {
...
1. startActivity(Activity B) [this activity calls .finish() after x seconds]
2. dialog.show()
...
}

Логически, похоже, это должно работать. Однако после того, как я вернусь к мероприятию A из занятия B, весь экран будет затемнен, как если бы диалоговое окно отображалось, но без диалогового окна.

Мне удалось обойти эту проблему, изменив вызовы как таковые, и после завершения действия B диалоговое окно отображается, и никаких странных проблем не возникает:

Activity A.onCreate(...) {
...
1. dialog.show()
2. startActivity(Activity B) [this activity calls .finish() after x seconds]
...
}

Кто-нибудь знает, почему порядок звонков так важен? Для меня они должны работать одинаково.

1 Ответ

3 голосов
/ 08 февраля 2011

Обе эти функции являются асинхронными функциями.Это означает, что выполнение кода на них не приостанавливается, а продолжает вызывать следующие строки.

Вместо того, чтобы вызывать их один за другим, нужно дождаться, пока тот не вернется, прежде чем вызывать следующий,Если вы хотите сначала показать диалог, добавьте onDismissListener для прослушивания при закрытии диалога.В этом слушателе вы можете начать следующее действие.

...