Androrid Handlerの仕組み
AndroidにおけるHandlerメカニズムとは、スレッド間の通信を実現するための仕組みで、メッセージキューとメッセージループに基づく仕組みである。
各スレッドはそれぞれメッセージキューを持っていて、スレッド間で通信する必要がある場合はHandlerオブジェクトを作成し、メッセージを相手スレッドのメッセージキューに送信することができる。相手スレッドは、メッセージキューからメッセージを取り出して、メッセージの内容に基づいた処理を実行することで通信を行う。
Androidでは、メインスレッド(UIスレッドとも呼ばれる)のLooperオブジェクトがメッセージキュー内のメッセージを処理します。Looperはメッセージキューからメッセージを逐次取り出し、対応するHandlerに処理を振り分けます。スレッドで時間のかかる処理を行う必要がある場合、そのスレッドにLooperオブジェクトを作成し、そのスレッドに独自のメッセージキューを持たせることができます。
ハンドラメカニズムを使用する際には、postメソッドを使用してRunnableオブジェクトをメッセージキューに送り、指定されたスレッドで実行できます。 sendMessageメソッドを使用してMessageオブジェクトをメッセージキューに送り、指定されたスレッドでそのメッセージを処理できます。
ハンドラ機構により、Androidはスレッド間通信を実現し、さらにメインスレッドと他のスレッド間通信を実現することで、メインスレッドでのUI更新要求を保証しています。