Время события Android (тосты и намерения)

1

Я пытаюсь явно запустить намерение для нового 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) {} ", чтобы связать выполнение для пары секунд.

Теги:
android-activity
toast
timing

3 ответа

1
Лучший ответ

Некоторый пример кода для обновления пользовательского интерфейса в ответ на синхронизированные события можно найти в http://developer.android.com/resources/articles/timed-ui-updates.html.

1

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

  • 0
    Ах, спасибо, это больше похоже на решение, которое я ищу. Не могли бы вы опубликовать пример кода?
  • 0
    У меня нет урезанного примера, но на developer.android.com/reference/android/os/Handler.html вы можете найти метод postDelayed (). Накорми его работоспособностью и задержкой; ваш runnable будет выполняться примерно в это же время. Если вам нужно опубликовать исполняемый файл из чего-то другого, чем ваш поток пользовательского интерфейса, ваш поток пользовательского интерфейса может создать новый Handler () и передать его в службу / и т. Д., И этот код потока не из пользовательского интерфейса может использовать handler.postDelayed ().
0

Должен ли быть тост?

Если вы решили использовать пользовательский диалог (удаленный заголовок, кнопки и т.д.), это, вероятно, лучший выбор. Используйте обработчик для отклонения диалога после заданного времени и запуска нового действия.

  • 0
    Это не обязательно должен быть тост, но я думаю, что мне нужна пауза перед новым заданием в любом случае. Также будет происходить Tween, и он также должен быть полностью выполнен до запуска этого действия. Знаете ли вы способ сделать паузу, кроме "Thread.Sleep ()"? Я попытался использовать этот метод, но он также приостановил выполнение моей анимации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню