2012-01-04 16 views
1

私は4つのビューを持っていて、最初のビューが2秒後に表示されるようにします。 ViewをVisibleにして2秒後にもう一度Invisibleなど無限にViewを選択すると、これはランダムです。どのように1つのビューを表示するには、2秒待ってから、次のビューの表示、2秒、インビジブルなど

私が、Viewごとに4つのスレッドを作ろうとしたので、Viewが選択されるたびに、対応するThreadが開始されます。 Viewを1つだけ選択すると、これはうまく機能します。私はhandler.sendEmptyMessage(0)でView Visibleを設定しました。 とhandler.sendEmptyMessageDelayed(1, 2000)は2秒後にView Invisibleを設定します。

複数のビューが選択されている場合、これは選択された最後のビューに対してのみ機能します。 これが当てはまると思います。なぜなら、MainThreadはすべてのスレッドが作業を終えた後でなければMessageQueueを実行しないからです。だから私は、MessageQueueが実行されている(そして、UIが変更された)メソッドが必要です。

ありがとうございます!

+0

ハンドラを持っているときにスレッドが必要なのはなぜですか?そして、私たちのコードのいくつかを見せてくれますか? – tidbeck

答えて

0

複数のスレッドが実行されている場合、特定のスレッドが別のスレッドの前後に実行されることを保証する方法がありません。

2秒ごとに空のメッセージを送信するスレッドを1つだけ持つ方がよいでしょう。そのメッセージが受信されると、以前に表示されたビューを非表示にし、表示する次のビューをランダムに選択して表示します。

関連する問題