2011-01-31 5 views
1

Thread.sleepの前にスクリーン出力(ToastまたはsetContentView)を実行しようとすると、スリープ後(またはすべてのスレッドがスリープするまで)は表示されません。つまり、Thread.sleepの後に出力を行うと、最初の出力が上書きされます。 Thread.sleepを呼び出す前に、私がビュー上でforceLayoutを使うと、それはうまくいかないでしょう。 Androidはすべての出力を保存し、プログラムの最後に表示しているようです。 PC上で簡単なJavaアプリケーションなどのコードを実行すると、意図したとおりにうまく動作します。Thread.sleepの前に強制スクリーン出力

答えて

1

ハンドラにジョブを渡します。私はUIスレッド上でThread.sleepをやっていないことを願っています。これは、常に画面がフリーズしてしまう可能性があります(そしておそらくあなたのプログラムが応答しなくなることもあります)。

2

UIスレッドではsleep()を実行しないでください。UI全体がブロックされます(気づいたとおり)。

一定の期間が経過した後で何かを起こしたい場合は、Handlerを作成し、そのpostDelayed()メソッドを使用して遅延メッセージを送信することができます。

+0

ありがとうございます。私は、常にsleep()の代わりにpostDelayed()を使用しなければならないと思います。問題は、一連の遅延時間を変更したい場合、sleep()のような単純なシーケンスではなく、postDelayed()への呼び出しを入れ子にする必要があるということです(ちょっとした雑用です)。 –

+0

また、postDelayed()を複数回タイムアウトして呼び出すことができますか? – Thomas

関連する問題