Как сделать один вид видимым, подождать 2 секунды, невидимый, затем следующий вид видимый, 2 сек, невидимый и так далее - PullRequest
1 голос
/ 04 января 2012

У меня есть 4 вида, и я хочу, чтобы первый вид становился видимым, затем через две секунды невидимый, затем следующий вид должен становиться видимым, а через 2 секунды снова невидимым и т. Д. До бесконечности, какой вид выбран, это случайно.

Вплоть до того, что я пытался создать 4 потока для каждого вида, поэтому каждый раз, когда выбирается вид, запускается соответствующий поток.Когда выбран только один вид, это работает очень хорошо, я работал с handler.sendEmptyMessage(0) для настройки View Visible и handler.sendEmptyMessageDelayed(1, 2000) для настройки View Invisible через 2 секунды.

Но когда выбрано больше видов, чем один, это толькоработает для последнего просмотра, который был выбран.И я думаю, что это так, потому что MainThread выполняет свой MessageQueue только после того, как все потоки завершены с работой.Поэтому мне нужен метод, который MessageQueue всегда выполняется (и пользовательский интерфейс изменился), когда поток завершается.

Спасибо !!

1 Ответ

0 голосов
/ 04 января 2012

Когда у вас запущено несколько потоков, у вас нет возможности гарантировать, что какой-то конкретный из них будет запущен до / во время / после другого.

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

...