スレッドとハンドラーの違いを見つけようとしています。新しいハンドラーを作成すると、新しいスレッドが作成されますか? post()を使用して新しいハンドラーを実行すると、新しいスレッドが作成されますか?説明してください
スレッドは、ほとんどのことを実行できる一般的な処理タスクですが、実行できないことの1つは、UIを更新することです。
一方、ハンドラーは、UIスレッドとの通信(UIの更新)を可能にするスレッドにバインドされています。
したがって、たとえば、ハンドラーに投稿されたメッセージ(Runnable)を介してトーストを表示したり、プログレスバーを更新したりできますが、このrunnableをスレッドとして開始した場合はできません。
ハンドラーを使用すると、MessageQueuing、スケジューリング、繰り返しなどを行うこともできます。
Androidでスレッドが必要な状況にはまだ遭遇していません。
私は主にAsyncTasksとHandlersの組み合わせを使用します。
前述のタスクのハンドラー。
ダウンロード/データのフェッチやポーリングなどのためのAsyncTasks。
Androidでのスレッド化については、開発者向けの記事「 Painless Threading "」をご覧ください。
修正:各ハンドラーインスタンスは、単一のスレッドとそのスレッドのメッセージキューに関連付けられています。それらは、それ自体に代わってスレッドではありません。説明されているように ここ 。
スレッドは、実行中のプロセスを定義します。 Androidにメイン(UIスレッド)があるように。他のすべてのスレッドはバックグラウンドで実行されます(並列)。
ハンドラーは完全に異なり、ハンドラーで定義されたタスクを開始するようなものです。
混乱を解消し、Androidでスレッド化を実行するには: http://Android-developers.blogspot.com/2009/05/painless-threading.html)を読む必要があります
そして、私はすべての場合にスレッドを使用する代わりにAsyncTaskを提案します。
スレッドでハンドラーを使用する理由:
Androidにアプリケーションをインストールすると、MAIN UIスレッドと呼ばれるそのアプリケーションのスレッドが作成されます。すべてのアクティビティはそのスレッド内で実行されます。Androidシングルスレッドモデルルールそのアクティビティ内で定義された別のスレッドのUI要素(ビットマップ、テキストビューなど)に直接アクセスすることはできません。
したがって、別のスレッドでメインUIスレッド要素にアクセスする場合は、ハンドラーを使用します。