3

postDelayedについて質問があります。androidのドキュメントによると、実行可能ファイルがキューに追加され、UIスレッドで実行されます。これは何を意味するのでしょうか?

したがって、たとえば、レイアウトの作成に使用したのと同じスレッドを使用してRunnableを実行しますか?

レイアウトの作成とアクティビティの定義中に実行される独立したスレッドとして使用したい場合はどうすればよいですか?

ありがとうクリス

4

2 に答える 2

3

はい、UI スレッドで実行されます。

バックグラウンド スレッドを実行する場合は、通常の方法で実行します。

Thread t = new Thread(new Runnable(){});
t.start()

しかし、バックグラウンド スレッドが行う可能性のある何かに応答して UI を変更したい場合は、postDelayed() を使用できます。

UI への変更は、メインの UI スレッドで行う必要があります。

于 2010-06-03T19:44:03.787 に答える
1

おめでとう!複数のソリューションがある場所の 1 つを見つけました。

  1. ハンドラーと PostDelayed は、フォアグラウンド アクティビティを定期的に呼び出すための優れた軽量な方法です。メッセージも再利用されます。これらは、スネークのサンプル プログラム (Snake/SnakeView.java/sleep()) で使用され、スネークを動かします。「500ミリ秒遅れてメッセージを投稿する」として実行され、500ミリ秒でHandleMessage(ハンドラーのデフォルト)でキャッチし、移動してから再度送信します。メッセージもobtainMessage()で再利用されます。ボタンが押されている間にボタンを更新するためにこれらを使用しました。

  2. スレッドは少し重いです。これらは、バックグラウンドまたはスレッドの実行に既に慣れている場所で使用できます。「new Thread(aRunnable).start()」を作成します。Androidではあまり使用していません。

  3. StartActivityForResult() で Intent を起動し、OnActivityResult で結果をキャッチして標準の RPC を作成します。詳細については、メモ帳の例の手順 2 を参照してください。

  4. さまざまなシナリオで起動するインテントをさらに調べます。「インテントの作成と起動」を別々の関数に入れると、メンテナンスとデバッグに役立ちます。

幸運を!

于 2010-06-03T23:15:29.197 に答える