Я пытаюсь явно запустить намерение для нового Activity, но мне бы хотелось, чтобы какой-то код в текущем Activity завершил выполнение в первую очередь. Я немного поработал, и у меня есть пара идей, но я думаю: "Там должен быть более простой способ сделать это". Вот соответствующий блок кода:
cpuToast(dmg);
if (player_.getStatus() == false)
{
playerWon_ = false;
Intent intent = new Intent(Main.this, Death.class);
startActivity(intent);
}
dmg - это int. cpuToast просто заставляет строку отображать урон, а затем вызывает show(). getStatus() возвращает, был ли убит игрок. В случае, если игрок был убит, я запускаю новое намерение, которое будет играть анимацию смерти игроков. К сожалению, действие "Смерть" запускается до того, как Тост становится даже видимым, а затем он становится видимым во время действия Смерти, которое я не хочу.
Кто-нибудь знает простой способ убедиться, что Toast выполняет полностью до запуска Death Activity? Из того, что я нашел, похоже, что мне нужно создать объект "Timer", когда действительно все, что я хочу, это простой цикл while (while (Toast.isVisable) {} ", чтобы связать выполнение для пары секунд.
Некоторый пример кода для обновления пользовательского интерфейса в ответ на синхронизированные события можно найти в http://developer.android.com/resources/articles/timed-ui-updates.html.
В то время, когда вы начинаете свой тост, вы также можете отправить сообщение с задержкой на текущую деятельность; runnable этого задержанного сообщения может начать новое намерение.
Должен ли быть тост?
Если вы решили использовать пользовательский диалог (удаленный заголовок, кнопки и т.д.), это, вероятно, лучший выбор. Используйте обработчик для отклонения диалога после заданного времени и запуска нового действия.