Android では、Handler を使用してメッセージを投稿/処理できます。HandlerThread を使用しない場合 (その Looper を Handler に渡す)、この場合、Handler は MainThread (UI Thread) の Looper を使用しますか?
Handler が MainThread の Looper を使用すると、どのような結果が得られますか? mainThread がブロックされる可能性がありますか?
Android では、Handler を使用してメッセージを投稿/処理できます。HandlerThread を使用しない場合 (その Looper を Handler に渡す)、この場合、Handler は MainThread (UI Thread) の Looper を使用しますか?
Handler が MainThread の Looper を使用すると、どのような結果が得られますか? mainThread がブロックされる可能性がありますか?
ドクが言うように:
ルーパーを持つ新しいスレッドを開始するための便利なクラス。
その後、ルーパーを使用してハンドラー クラスを作成できます。
start() を呼び出す必要があることに注意してください。
HanderThread
クラスは、Looper オブジェクトをカプセル化する Thread クラスから継承するため、Looper のオープンとリリースの詳細は気にしません。通常のスレッドの場合と同様に、使用Looper.prepare()
しLooper.loop()
て として変換する必要がありLooperThread
ます。
HandlerThread は独自のルーパーを持っているため、多数のバックグラウンド タスクを実行する場合に便利です。通常、メッセージを Handler に投稿すると、MainThread のルーパーが使用されます。これは、タスクが UI スレッドで実行されることを意味します。しかし、HandlerThread の場合、これらのタスクはワーカー スレッドで実行されます。詳しい説明はこちら