67

を使用する最良のユースケースを理解しようとしていHandlerThreadます。

定義によると:

「ルーパーを持つ新しいスレッドを開始するための便利なクラス。その後、ルーパーを使用してハンドラー クラスを作成できます。なお、start() を呼び出す必要があることに注意してください。」

Thread私は間違っているかもしれませんが、 、 、Looperおよびを使用して同様の機能を実現できHandlerます。では、いつ使用する必要がありますHandlerThreadか?例は本当に役に立ちます。

4

2 に答える 2

15

HandlerThreadLooperのソース コードへのリンクを次に示します。

2つを見ると、 aHandlerThreadがまさにその通りであることがわかります。これは、 aThreadを持つ aを開始する便利な方法Looperです。なぜこれが存在するのですか?スレッドには、デフォルトではメッセージ ループがないためです。はHandlerThread、そうするものを作成する簡単な方法です。Handlerソースコードから判断すると、この関数を、Thread、およびで複製できますか?Looper答えはイエスです。

アンExecutorは違います。送信された実行可能なExecutorタスクを取得し、それらを実行するものを推測します。なぜこれが必要なのですか?これにより、タスクの実行を実際の内容から切り離すことができます。いつこれを使いますか?複数のタスクを同時に実行する必要がある状況があったとします。Executorを使用して、それらすべてを単一のスレッドで実行することを選択して、それらが連続して実行されるようにすることができます。または、固定スレッド プールを使用して、すべてではなく一部を同時に実行することもできます。どちらの場合でも、タスクの内容、つまり実際に何を行っているかは、タスクが実行される方法とは別のものです。

于 2013-08-09T18:12:57.730 に答える