19

Android では、Handler を使用してメッセージを投稿/処理できます。HandlerThread を使用しない場合 (その Looper を Handler に渡す)、この場合、Handler は MainThread (UI Thread) の Looper を使用しますか?

Handler が MainThread の Looper を使用すると、どのような結果が得られますか? mainThread がブロックされる可能性がありますか?

4

6 に答える 6

6

ドクが言うように:

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

HanderThreadクラスは、Looper オブジェクトをカプセル化する Thread クラスから継承するため、Looper のオープンとリリースの詳細は気にしません。通常のスレッドの場合と同様に、使用Looper.prepare()Looper.loop()て として変換する必要がありLooperThreadます。

于 2012-05-23T03:21:48.560 に答える
2

HandlerThread は独自のルーパーを持っているため、多数のバックグラウンド タスクを実行する場合に便利です。通常、メッセージを Handler に投稿すると、MainThread のルーパーが使用されます。これは、タスクが UI スレッドで実行されることを意味します。しかし、HandlerThread の場合、これらのタスクはワーカー スレッドで実行されます。詳しい説明はこちら

于 2016-06-07T14:13:06.903 に答える