2012-02-24 12 views
18

スレッドとハンドラの違いを調べようとしています。新しいハンドラを作成すると新しいスレッドが作成されますか?新しいハンドラがpost()を使用して実行されるとき、それは新しいスレッドを作成していますか?説明してくださいスレッドとハンドラの違い

答えて

20

スレッドはほとんどの処理を実行できる一般的な処理タスクですが、UIを更新することはできません。

ハンドラは、UIスレッドとの通信(UIの更新)を可能にするスレッドにバインドされています。

例えば、トーストを表示したり、メッセージ(Runnable)を介してプログレスバーを更新してハンドラにポストしますが、この実行可能ファイルをスレッドとして起動することはできません。

ハンドラを使用すると、MessageQueuing、スケジューリング、繰り返しなどのこともできます。

私はアンドロイドにスレッドが必要な状況にまだ遭遇していません。

ほとんどの場合、AsyncTasksとHandlersの組み合わせを使用します。

上記のタスクのハンドラ。あなたがアンドロイドでよりスレッドのため、ここで開発者向けの記事「Painless Threading」を読むことができるなど、ダウンロード/データフェッチとポーリングの

AsyncTasks

修正: 各Handlerインスタンスは、単一のスレッドとそのスレッドのメッセージキューに関連付けられています。彼らは自分のために糸ではありません。 hereと記載されている。

+3

ハンドラはスレッドではありません – Selvin

+0

True、correct – MahdeTo

2

スレッドは実行中のプロセスを定義します。あなたがアンドロイドにメイン(UIスレッド)を持っているように。他のすべてのスレッドはバックグラウンドで実行されます(並行して)。 http://android-developers.blogspot.com/2009/05/painless-threading.html

と私は示唆している:

ハンドラは

はあなたの混乱を一掃し、あなたが読まなければならないアンドロイドでスレッドを実行するには...それはハンドラ内で定義されたタスクを開始するようなもので、完全に異なっていますすべての場合にスレッドを使用する代わりにAsyncTaskを使用します。

0

我々はスレッドとハンドラを使用する理由:

我々はアンドロイドにアプリケーションをインストールすると、それはそのアプリケーションのスレッドを作成アンドロイドシングルスレッドモデルでは、すべての活動は、そのスレッド内で実行、メインUIスレッドと呼ばれますルールでは、そのアクティビティ内で定義された別のスレッドのUI要素(ビットマップ、テキストビューなど)に直接アクセスすることはできません。

したがって、別のスレッドによってメインUIのスレッド要素にアクセスする場合は、ハンドラーを使用します。

関連する問題